For the HDD case, your example looks pretty good. The average seek time is 1/3 of the maximum time to move across all of the tracks, and the average rotational delay is one half a revolution of the disk.
If the system has a multi-sector I/O buffer, then there will be a check whether the desired sector is already in memory, and if it is, then the existing copy will be used rather than reading it again off the HDD again. This is particularly true in those cases where clusters are used, and sequential sectors in the cluster are accessed.
On the other hand, if the sectors in a file are being read sequentially, but the sectors do not follow each other on the disk due to fragmentation, then you have the seek time plus rotational latency added to every sector read.
Also for the HDD case, there is normally very little difference between reading and writing (I realize you just asked about accessing the mass storage device, but I'm including this just to be complete). Even if the data is encrypted, there is a delay in unencrypting the data when reading, and encrypting it on writing, granted the latter could take a little longer.
For the SSD case, the big difference is there is no seek time or rotational latency. (There is some setup time, but it is in the order of 100 µs). Also, the transfer of bytes from the SSD memory to RAM can be several times faster then for a HDD. The overhead for an encrypted volume would also be the same as above.
The big hit with SSD is the writing of the data. NAND flash memory must be erased first, and then written in pages. The erasing can take a few milliseconds. Also, there is a finite number of times this erase cycle can be reliably performed on each page, so to keep the SSD media from wearing out too quickly, wear-leveling is used. This means a frequently written page of sectors will be moved to another area of the disk.
So to answer the question in your title, I would say the biggest overhead for SSD's would be the wear-leveling.