I was playing some Clash Royale and just realized that that game actually has a very similar progression to PVZ:H in the sense that it has a time locked restriction on the rewards. This essentially means that you cannot grind the game and instead you are better off just playing occasionally, when the timelocks are removed. Similarly, it takes a very long time to progress in that game and getting the legendary cards is extremely difficult.
And yet, it is one of the most successful games in the app store.
I believe the success lies in a couple of things:
1) Even though it takes a while to rank up, the games are fun because your are usually matched against people of the same level as you.
2) All the cards can be used to make strong decks, once you figure out how to use them.
These two factors make the game fun to play, even if you are not advancing all the time. There are other factors that make the game financially successful, when put together with, a game that is fun to play, like having plenty of interesting "sales" that make using cash to purchase very attractive.
I think this style of reward makes the game much more accessible to a mainstream audience, which the PvZ has always catered to from the beginning. You're average mainstream person is not sitting down to grind a game for hours, they will take their phone and play when they have a chance, here and there. Given that the quests reset every 3 hours and that you can accumulate up to 3, this means that you will always have a quest to aim for, even if you are not advancing in the ladder.
Given this approach, it's understandable that you might find the rewards to be problematic if you are a hardcore Hearthstone player and wanted the same type of reward system from this game. Your main complaint is that you are not getting more legendaries and heroes at a fast enough pace if you don't spend any money but the whole idea of the model is that you should be able to enjoy the game from repeated play even if you aren't getting new legendaries and heros every day.