That sounds like a recipe for an incredibly toxic environment. Not only are you hired for a specific pigeonhole, you are expressly forbidden from progressing through it: at least in some sane companies promotion is preceded by already having done the new role for a time and the title jump merely formalises the situation.
In fact, I thought the pigeonhole hiring in traditional finance was bad enough. You just managed to outdo decades of dysfunction in one try.
The last thing we need in tech is a codified caste system.
I've worked at a company that did both (internal promotion and internal re-hire) and IME people that actively applied to new positions had faster "career progression".
You're hired for a position, when you feel you're ready for the next level you apply, if not, just continue where you are. This doesnt mean you dont get paid more the better you perform. Why do you need someone above you to say you're ready for the next level?
They try again next cycle.
how do you know that's what usually happens?
I think promotions to the next level should just be considered a new job (in the same company), and you don't 'win it' or get promoted - instead you apply for it and go through an interview process. If you study/train and get through the interview, then you get the job and all it's benefits. This way, employees can focus on doing the right things for the company and if they feel they're ready for the next level, apply for it.
If they don't get it, its based on merit - they can go back, get more experience/study etc. and reapply later. Their ego isn't destroyed, they're not pushed to to do the wrong things simply to get promoted, and I bet most people will remain at the company.