Actually, I think our announcement system sends to each address individually (not very efficient at all).
If it were smarter, it would do direct SMTP delivery and batch messages by the receiving host address (sort of the way Mailman does). Not sure about with PHP, but with Perl there are pretty definitely some smarter ways to do this.
Calling sendmail with Bcc should work OK. Of course, some people ignore messages not sent to them directly, which is one reason you might want to put the recipient’s address in the message itself.
Note that (while it is probably technically possible) you should not do direct SMTP transactions from our servers - this bypasses our logs, and will also probably have the effect of pissing me off :> (and / or blocking outgoing traffic on port 25).