Make sure we send out all three connections when initiating a private broadcast.
Use MarkResolved instead of Remove to mark a tx as having been received back or mempool-conflicted. 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