Unfortunately I can't think of any way to do it, but I'm not sure enough thoughts by specialists have been put into this. Maybe there is a way after all, it just can't be a "simple" salary cap. I know nothing about finances and law, but maybe there could be a way of having a certain volume of money, something like a turnover, in which all money the team uses in any way, is counted, which is not allowed to be excelled. And all sponsorships of the team or riders of the team have to be declared. It would probably require major changes in the whole system, like the status of the riders regarding labour legislation and so on... But it might be worth it.
For now it looks like UAE might challenge them in the next years, and although I am not a fan of UAE at all, that might still bring something good to this messy system.