Someone on another board had a similar problem I recall, and they solved it by manipulating the headers.
You have the To: field set to yourself or a dummy email address, and then put everyone else in the headers as BCC's. Under a Blind Carbon Copy, each recipient only sees themselves and no one else. But your program is sending only one call to the MAIL() function and server, and then it is out of your hands.
This is fine for 50 emails. But as you get closer to 50,000 you should split them into chunks and then do as above with BCC.