In the case of the lottery a seed provided to the function that uses block hash can be used to remove the interference from all the parties (miners and house).
The seed is selected by the 'house' previous to the beginning of the lottery. The house encrypts it and provides a public key for it. When the block at which the lottery plays is reached, the house uses the seed (known only to the house until that point) and the blockhash to calculate the random number. The house publishes the private key allowing the seed word to be decrypted so that everyone who wishes can verify the process.
In this approach: The miners can influence the blockhash but not the seed. The house knows the seed but not the blockhash The ticket holders can verify the seed.
Other than that, the blockhash should work perfectly fine for random number generation in anything else.
Any objections to this?