Possible to edit 'View/Contact Team Members' permission?

There’s a plugin which would allow you to disable direct and group messages:

If you set that up and also disallow the creation of private and public channels, you should be good to go with most of your requirements. The only thing left is, that they are still able to see each other by looking at the members of the town-square channel or by using the search and mentions.