stream method
Gets (creating on first call) the deterministic stream for
namespace. The same namespace on the same rootSeed always
starts from the same derived seed, and repeated calls for the same
namespace return the SAME instance (its sequence keeps advancing
across calls, it isn't reset).
Implementation
SeededRandom stream(String namespace) => _streams.putIfAbsent(
namespace,
() => SeededRandom(fnv1aHash('$rootSeed:$namespace')),
);