Guard vRecvGetData (now in net processing) with its own mutex
Summary:
This requires slightly reorganizing the logic in GETBLOCKTXN to
maintain locking order.
This is a backport of core#19911 [5/6]
https://github.com/bitcoin/bitcoin/pull/19911/commits/ba951812ec0cc8ebee5911a582f188525b76ff0a
see D10187 for the removal of the !cs_main negative lock
Depends on D10529
Test Plan:
cmake .. -GNinja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Debug -DENABLE_SANITIZERS=thread ninja && ninja check check-functional
Reviewers: #bitcoin_abc, Fabien
Reviewed By: #bitcoin_abc, Fabien
Subscribers: Fabien
Differential Revision: https://reviews.bitcoinabc.org/D10530