That's a really good point about notification settings, that's probably another one that will be per team. Team admins will also need to be a role assigned on a per team basis.
For direct messages, there would only be one channel between two users but that channel would show up across all teams. So if I was in Team A and direct messaged you, I could also switch to Team B and see the same message I sent you from Team A. If you messaged me, I would be able to see the message you sent no matter what team I was logged in to.
One thing we were considering for direct messages would be to have a filter on the direct messages "More" menu to show people on the team or people on the whole server, to make it more obvious who was on a team and who was not.
Can you help me understand more about the use case of only wanting people to be able to message each other if they have a team in common? We were thinking it would be more useful to let anyone on the server message each other (kind of like a company wide directory, so you could message anyone at the company even if they were on a different team). It might be possible to make this an option in the System Console to turn on/off server wide direct messages for cases where it would be better to limit direct messages to teams, but we would need to think a little more on how that would work.