Ah, the FunFair example makes it more clear what you mean. I think the main obstacle there is finding/creating a decentralized way for (pseudo-)random numbers to establish true fairness. From what I've heard that problem has mostly been solved, but I don't know for certain.
> The smart contracts have to be in someone's control.
They don't _have_ to be. Someone has to deploy the smart contract, but that doesn't necessarily mean that they get any privileged access to alter/use the smart contract after deployment. That's where a lot of the beauty of smart contract enabled blockchains comes from in my opinion.
There are various solutions for randomness. Funfair's is for the user and the house to generate chains of hashes, e.g. hash(hash(hash(secret))). Each posts the outermost hash to the smart contract. Then each can reveal successive preimages, and the contract can XOR each pair to get a random number.
> The smart contracts have to be in someone's control.
They don't _have_ to be. Someone has to deploy the smart contract, but that doesn't necessarily mean that they get any privileged access to alter/use the smart contract after deployment. That's where a lot of the beauty of smart contract enabled blockchains comes from in my opinion.