Consistently validate and allow for np.random.RandomState seeds

np.random.RandomState objects are handy way to incapsulate
random state in a deterministic, reproducible way.