Couple of thoughts ...
If when buying a hat the purchaser specified how much money goes into making hats vs improving game play
And or maybe
don't sell hats or don't ONLY sell hats, sell competition... not pay to play but pay to compete
Or maybe something along the lines of; if you want to compete against others you need to pay x number of in game gold coins/medals, you can either earn gold coins/medals from winning competitions or via an in app purchase
You could even maybe sell a "tickets" to watch a match in game rather than say just in twitch; and or maybe the winner(s) would win an in game pot for winning the match, this may mean to watch a match would be 1 medal/coin and to play would be say 10.
This would provide the incentive required to keep the devs making the game better rather than making more and shinier hats. The business model would then become to make a game where people are willing to pay a nominal amount to compete with each other.
A good single player mode would be the training required to get people to "match" level
A thought on the yearly cap is that instead of trying to tag the yearly cap to gold or some such; say up front we want <n> number of staff (dev/artist/etc) and that will cost $x, this way if next year you want/need a head count of 20 to make the game better, then we need $y