Moving to RandomNumberGenerator as CryptRandom is not supported in Mono

#847 
All implementations of RandomNumberGenerator are required to be thread-safe, so it's safe to use a cached instance.