Ensure deterministic randomisation across threads:

* Each thread has its own isolated random number generator
* The seed for each new thread is created by its parent using its seeded
  generator ensuring deterministic seed generation