It’s not all about the Cap but it’s definetly the biggest factor.
The cap exists to institute some sort of parity into the league, but that parity is strictly aimed at the teams, not the players. When you are telling a team that you have a limit to what you can spend absolutely they will choose to prioritize who to give that money for, especially if you happen to have a team changing superstar that is going to require that money.
Also, if you are the “middle class” that means that in theory I can get the same production from a guy that I draft instead of having to pay you slightly more money.
As long as there is a Cap and a draft where you can get “cheap” replacements every year for the outgoing vets of your team, this will continue. (Hillman got cut, in no small reason, because Denver drafted Devontae Booker)
The other way to go would be an european soccer system, where every team has to have and fund their own farm systems and there is no cap, draft or shared revenues. Of course that gives you, probably the least fair competition on the world, where small clubs rarely if ever get to compete against the big boys, but the players do have much more power and money for sure.