Dom, you need to stop calling this multi-tenancy because it's not that and when people talk about multi-tenancy usually they are solving problems different to yours.
In this case you want to share the same set of courses among many classes (each with a separate teacher), retaining full control of enrolments while minimising your maintenance and running costs.
Firstly, you will run into a very basic issue here because if you stop the "teachers" from being allowed to edit their course then they are basically being relegated to "tutors" (what Moodle calls "Non-editing teachers" in the default roles - basically just facilitators in forums and able to grade some activities like assignments. I assume you are OK with that. Still, I would include some "Teachers" course where they can give feedback to you and make suggestions about improving your courses.
Secondly, Moodle has a feature specifically for this case (for ten years or more): it's Separate Groups mode. In particular, you need to put each Non-editing Teacher in a group with their own students. In this case they will not see any group menus, not see any other groups, and they will feel like they are in the course by themselves, which I believe is what you want. The only caveat is that SOME activity plugins may not support this mode correctly but these are bugs with these plugins because Moodle's API requires it.
Thirdly, management of all these users over time. The above scenario is possible right now but you'll need to manage all the groups yourself using the groups interface in the course (as the main Teacher/Admin) and this will get tiresome with so many people involved. This is why I suggest you have a developer look at your exact requirements for this (eg shopping cart, external system synchronisation, etc etc) to come up with a new admin tool or other plugin that does exactly what you want here. It's very difficult to generalise this part across different content providers so that's where the beauty of open source and the extendability of Moodle comes in. My feeling is that the best way would be to look at populating cohorts at the site level and then automatically synchronising those to course enrolments (and groups).
Any of these should be able to help you with that: http://moodle.com/partners/?service=development&country=GB