This error message indicates that the send was unable to determine the recipients for the message. In principle, send should be able to determine them from the To: message header. Seems that this fails in your case (maybe due to the trailing , of the To: header in your message template). send has the parameter mto to pass the message recipients explicitely (likely, this should get a list as value).
The send method expects a string (the corresponding parameter is called messageText to clearly indicate this), not a Message object. This will give you an error, though not a not enough privileges.
Apparently, you are using the code above in a restricted environment (such as a TTW script). For security reasons, you must declare which modules should be available in those contexts (because some modules can contains very dangerous material). I suggest that you move the code into an unrestricted environment, such as e.g. a view.
No, but we stumbled across the BCC thing recently.
Yes. It is just MailHosts's _mungeHeaders method which does some weird things. E.g., if you provide a recipient address for the send method, additional headers like CC and BCC are ignored, and worse: BCC gets removed.
BCC is an auxiliary message header used to communicate with the mail delivery component to indicate additional addressees. This component will internally add addresses and then remove the BCC header.
MailHost may not handle BCC (or may handle it incorrectly); however, you can pass additional addresses via the mto parameter of Mailhost.send.