Make sure we send out all three connections when initiating a private broadcast.
Use MarkReceived instead of Remove to mark a tx as having been received back. Prevent additional stale retry connections by tracking disconnects and explicitly granting new connections with TryGrantRetry.
Intended as an alternative to #34707, addressing the theoretical timing attack described in #34707 (comment). Also fixes theoretical timing attacks described in #29415 (review). This is based on the idea described in #29415 (review):
always send 3 times regardless if the tx is received in our mempool or is otherwise invalid