Transactions should first go into the TransactionPoolState::candidates and with TransactionPoolCandidatesState extended to support storing the libp2p received messages grouped by message id. The logic should also be extended to handle libp2p gossip as an origin. This will make it much easier to later fix the issue of us trying to validate the pool before the node is even synced.
With that approach we would still receive and store the gossip messages but wait until we are synced to validate them.
#1065 (comment)