Does Bitcoin ensure all messages will be broadcast?
What you're describing is a push mechanism where each node automatically pushes whatever data it gets. This is not how the networking part of bitcoin works. The network protocol of bitcoin works as a pull mechanism. As a node, you request an inventory of blocks and transactions from other nodes. Usually, you request an inventory of what blocks and transactions other nodes have and then request specifically for the blocks and transactions you don't have. Other nodes you are connected to do the same thing.

As such, the upload bandwidth is only as much as other nodes request from you and given that you only need to receive each transaction or block once, in general, your upload bandwidth will be roughly equal to your download bandwidth.

That said, if you're one of the nodes that has a block first (like a miner), you're going to be uploading the block data to a lot more nodes than you download. If you're running a normal full node and not mining, you'll most likely be downloading more data than uploading.

That said, if your mempool gets flooded with transactions, the bitcoind behavior is to randomly discard transactions so that it's under a certain limit.