How can I attach this message to a transaction when sending nothing?
If you send nothing, what are you going to attach it to?
Generally, for most tokens (the main EOS token included), the
transfer action has a "memo" field which is exactly what you are looking for.
0.0001 EOS along with an advertisement text is a common pattern nowadays.
You can also have a contract which specifically sends messages, not tokens, this technique is sometimes also used for advertisements.
Can I see this message on a block explorer site? Where?
Any decent block explorer shows the memo field.
Common examples are eosflare.io and Bloks.io.
What stops me from sending a very long message of say 9000+ characters and bloating the blockchain size?
First, your account has to have sufficient CPU and network resources to send the long message.
Second, the contract can limit the memo field to some reasonable number of characters.
Which wallets let me send a message like this to be added to the EOS blockchain?
Again, any decent wallet will have the option to specify the memo field: more often than not, the memo field is used by other contracts to act somehow, so not supporting a custom memo would be a disservice.
For example, when you send some EOS to a decentralized exchange, you don't just give it to the exchange: the memo field is used to specify what exactly you want that EOS to do, for instance, buy another token at a certain price.
Of course, in this case, the exchange's site interface takes care of the proper message formatting.
So, virtually any tool which can send tokens on the EOS network supports the memo field:
cleos command-line tool, Greymass' wallet, eostoolkit.io website with Scatter, to name but a few.