In validation thread(s), the typical lock order is cs_main -> cs_vNodes.
Avalanche reverses this by trying to lock cs_vNodes -> cs_main, tripping the deadlock
detection.
Following the same pattern as net_processing, we can lock cs_main and assert the lock
is still held within the ForNode() lambda. This ensures the same lock order as other
threads.