Replace usage of java.util.Random with java.util.concurrent.ThreadLocalRandom,
or java.util.SplittableRandom when setting seed is required. This provides better
performance and randomness.
Also do not manually generate seed when unnecessary since the Java runtime
mixes more bits into the automatically generated one.