I think the salary cap is essentially working as it should. The most money is funneling toward the marquis players who are selling the game--LeBron, Curry, etc. The role players who fill out the team are still millionaires, but they really shouldn't get anywhere close to the money the stars do. (Should Justin Timberlake's backup singers get paid anywhere near the level he does?) The problem teams like Portland have is when you overspend on role players because you know you can't attract stellar free agents and you aren't drafting low enough to consistently get lottery talent.
If anyone is getting overpaid in this industry, it's the owners. When was the last time you attended a game to watch Paul Allen? The NBA is a cartel that regulates itself to maximize profits for ownership. A true free market would allow hundreds of NBA teams, all paying whatever they want for stars. Instead of a 50:50 spread, the players would get the vast lion's share of profits as teams out-bid each other for talent. (Such a system really isn't feasible for pretty obvious logistical reasons. Scheduling, arenas, etc.)
In a true free market system the money should funnel to the actual scarcity, and that scarcity is talent at the LeBron/Curry level. People who can own a private jet, gymnasium, merchandising, and marketing operations like NBA owners can just aren't scarce--there are thousands of such organizations in America. They only have value because only 30 are allowed to own teams.
Instead, the 30 team limit creates artificial scarcity, which is why a shitty franchise like the Clippers is probably worth $3bil or some such ridiculous number, and why the Knicks can continue to churn ridiculous profits despite years of producing a consistently shitty product (despite all its amazing advantages).