Farming blocks placement check and drops

PR splitting as expected in #374.
Seems it's ready to be reviewed. 
Move all instances of `Random` to `BlockType` as a protected static field. Too many things access a random object for it to be justified to create several copies of the same seeded random.