Currently, NextInvToInbounds schedules each round of inv at the same time for all inbound peers. It’s being done this way because with a separate timer per peer (like it’s done for outbounds), an attacker could do multiple connections to learn about the time a transaction arrived. (#13298).
However, having a single timer for inbounds of all networks is also an obvious fingerprinting vector: Connecting to a suspected pair of privacy-network and clearnet addresses and observing the inv pattern makes it trivial to confirm or refute that they are the same node.
This PR changes it such that a separate timer is used for each network.
It uses the existing method from getaddr caching and generalizes it to be saved in a new field m_network_key in CNode which will be used for both getaddr caching and inv scheduling, and can also be used for any future anti-fingerprinting measures.