So here is a a potentially dumb idea.
When there is a large queue of unconfirmed transactions, is batch transactions election possible? so instead of a node checks 1 tx, decides whether its valid or not then broadcast it, then goes on to another tx and repeats the same process. Can it be like the following:
Node checks 10 unconfirmed transactions (or 100) at a time if they are all valid, then they broadcast them. if at least one of them is invalid, then the node falls back to checking 1 tx (for each tx in the 10 or 100 unconfirmed transaction) at a time and broadcast each tx, and after that check the next 10 unconfirmed transactions (or 100) and repeat the process.
Obviously the nodes will also have to be able to receive "batches" of transactions and do the same process.
Will this make the process more efficient? a node can batch check transactions and only sends / broadcasts once per batch if they are all valid, this could make the protocol less chatty when there are tons of unconfirmed transactions I think.