They froze hiring because of risk. That tends to happen when there's uncertainty and/or debt concerns. This happens all the with expensive (but very nice to have) assets.
When problems start to mount the expensive stuff gets jettisoned. It could be very promising and it would still be cut. Now some programs that they see as crucial to their future development/survival might still be kept, but that doesn't mean that because people / projects that are cut necessarily lack promise (though this is often the case).
It could just as easily be that they just don't have the same high likelihood of success, or the payoff could be not worth the risk.
I'd add that the adage "if they are working for you, that's one less worker for your competitor," is a little bit of an unnecessarily negative portrait. At a high level, would you rather your team have a "C+ teammate while your competitor has an A+ teammate", or would you like the opposite? The answer is obvious and you do everything you can to put the balance in your favor... but I see this as different from paying to keep them off the market. This repeats for every team member so you have to try to do this every time to keep that balance.
On the other hand, from the perspective of a smaller company, they have an A+ person that's not available at all, and will go to another high paying big company before you anyway. So that I see as more of the talent hording people refer to. I guess I don't see a small hypothetical company as "competition", but maybe that's a bad idea.
EDIT/PS: I know in the second to last paragraph I do a poor job of describing why it's different from "keeping them off the market".
I see it more like picking players before a game... of course you pick the best players for yourself, and do so to some extent to prevent them from going to the other team, but I don't think the adage fits.