Speed up the simulation ~380x.

Internally, rand uses a mutex to synchronize its state so that multiple
goroutines may generated random numbers safely. Unfortunately, in code
where rand.Float64 (for example) is invoked very frequently, this can
lead to a slowdown when using goroutines. With this patch, each HDD
model creates its own random number generator, avoiding the need for
synchronization.

No goroutines: ~1m
Before this patch with 32 parallel goroutines: ~19m
After this patch with 32 parallel goroutines: ~3s