Background music (again)

I know this topic was discussed a lot (also by me)…
But my client really needs it.
So, here is what I have so far…
You need to call a custom group that will put the phone on auto-hold, something in the line of:

exten => 466,1,Answer
exten => 466,2,Playback(pls-hold-while-try)
exten => 466,3,SetMusiconHold(default)
exten => 466,4,WaitmusiconHold
exten => 466,4,Hangup
(I know these lines are not exactly how it is done)

That is all good when A. you have access to the phone, and B. you don’t care if the line is held up by the BGM.
But what happens when A and B are not true?
A. I have 70 “bell” extensions (they are wired to a speaker in the classroom), and no one has access to the phones.
B. I need the lines to NOT be held up by the BGM (so if there is a bell or an announcement, the classroom speaker will pick it up).
So we need a system (or an extension, or something) that will allow dialing a number from any phone to put the (wanted) speaker extensions into the BGM auto-hold extension, and monitor those lines for incoming calls, when they get a call, it will automatically hangup the BGM and allow the other call to go through, then, when the call ends, it will bring back the BGM.
I know it is a lot to ask, but if someone knows of some way to do this, please share…
Thanks