zmq test: dedup message reception handling in ZMQSubscriber
Summary:
PR description:
Fixes core#20934 by using the "sync up" method described in core#20538.
After improving robustness with this approach (commits 1-3), it turned out that there were still some fails, but those were unrelated to zmq: Out of 500 runs, 3 times sync_mempool() or sync_blocks() timed out, which can happen because the trickle relay time has no upper bound -- hence in rare cases, it takes longer than 60s. This is fixed by enabling immediate tx relay on node1 (commit 4), which as a nice side-effect also gives us a rough 2x speedup for the test.
For further details, also see the explanations in the commit messages.
Note that the changes in commit 4, the speedup from 45s to 14s runtime using noban permissions, were already applied in Bitcoin ABC in D10311.
This is a backport of core#21008 [1/3]
https://github.com/bitcoin/bitcoin/pull/21008/commits/6014d6e1b5a0dda6e20c2721f0bdb7e6a63ece81
Depends on D10588
Test Plan: ninja check-functional
Reviewers: #bitcoin_abc, Fabien
Reviewed By: #bitcoin_abc, Fabien
Differential Revision: https://reviews.bitcoinabc.org/D10589