You are correct on both accounts.
Regarding calculating the address for a given mapping’s key, looking here Solidity is also mixing in the address space of the mapping. (What exactly is the SHA3 op doing in the EVM? Does it hash the entire stack? Another question for my TODO.)
Regarding the address spaces being shared, yep. I briefly was thinking that would be an interesting idea (if an unlikely engineering choice), as you couldn’t control what was being output by SHA3, and I hadn’t seen any way in Solidity to do actual pointer manipulation, but of course that’s wrong, as you can obviously do it directly in the EVM assembly. :)