I've said it before and I'll say it again. This time I'll give the short version, you can read my previous posts on the subject for more detail.
The way to limit budgets is not through unenforceable caps. Limit the budget by limiting the incentive, (reducing the prize money) for the rich teams to spend $400 million. Redistribute the prize money so that the poor teams can afford to spend more.
Edit:
I will add a less controversial twist on one of my previous ideas. Engine manufacturers should be required to produce engines for a price which is significantly less than the current cost. The manufacturers should be required to sell any teams interested in purchasing their engines, without requiring multi-year agreements.