@gerzan, you've asked a great question. This answer may be coming too late for you, but perhaps someone else can benefit from it.
Basically, what you're asking for can be established with Google Groups. If you're not familiar with the system, there are two key permissions we can set: "view topics" and "post". Both of these can be set from the creation URL: https://groups.google.com/a/schoolname.com/forum/#!creategroup (note: replace schoolname.com with your actual domain!)
- Create a Google Group that contains all teacher addresses - let's call it [email protected]. Set view and post permissions to "All members of the group" so teachers can easily converse (although we're primarily creating the group to ease access permissions, as you'll see later). Also limit "Join the group" to "Only invited users".
- Create the class-specific groups you want, for example [email protected]. Set view and post permissions to "All members of the group" again. Limit "Join the group" to "Only invited users".
- Go to the following URL to directly add members: https://groups.google.com/a/schoolname.com/forum/#!managemembers/history101/members/active (replacing the bolded values with your domain name and group name, respectively). Here, enter [email protected] and set "Email subscription options" to "No email" so teachers don't get fed up with emails for classes they aren't teaching.
- After you add the teachers, add the other student accounts for this class. Then, anyone in the 'teachers' group will be able to send and any student in the class can send. (Bonus tip: you may want to add the teacher for this class and make sure they will receive "all email" from the group.
This is just one way to set up this model, let me know if you're interested in any others. Also, to manage group populations between semesters, I'd recommend looking at a tool like GAM where you can use CSVs and Powershell to quickly add/remove users from Google Groups.