Sorry I should add this precision: Broadcasting a transaction to a node that has already received this transaction.
In other word, inefficiencies.
I'm not sure what you are talking about. Do you mean that if a node sees a new transaction or block, it immediately relays it to other peers?
As far as I'm aware that's not quite true. The only thing a node does when receiving new tx/block is send an
inv message containing its hash. After that, a peer can request a tx/block using a
getdata message if it doesn't already have it.
That's true. Relaying not just the transactions related messages alone. It would look up for the sources so that it double virtually double confirm the transactions as well as the bitcoins.