Exposes a generic dead-simple "SeedEvent" interface, but currently just used for net messages.
This PR caused CI failures on Windows, and was patched the day after its merge with the following:
This moves events_hasher and events_mutex into RNGState() in random.cpp. This guarantees (through the existing GetRNGState() function) that the mutex is always created before any events are added, even when that happens inside global initializers.
Fixes the issue reported here: #17573 (comment), and includes the annotation from #17666).