I'm a game developer with an idea for Ethereum that would require players to pay a small fee to play. If the contracts are open-source, what would stop someone from duplicating the contract and replacing my address with theirs? Is there a better monetization scheme? If I didn't make my front end open-source, would anyone even trust it?
Not everything is going to be written on the blockchain/in a smart contract as that would be extremely expensive. Only the most important data should be saved and the rest of your front end code would be offchain and not visible to anyone. A great example would be to look at ethroll smart contract. The provable fairness is the only important part of their game to put on the blockchain and the rest is just a gui. https://etheroll.com/#tab7
You could make it non open-source. At least everything except the smart contract, ehich people will want to see if the game deals with money.
Nothing prevents other people from stealing your code and making a copycat of your game, but this has also happened many many times in the gaming industry and others and they didn't even need the source code to clone the game.
As with any non blockchain product, if you don't want someone else to copy your product and do it better than you, you would have to establish some unfair advantage that makes your version hard to copy or very expensive, and this doesn't have to do with the code most of the times, but with the loyal community you manage to build around your game, the team, the customer support, the IP, partnerships, etc.