My favorite idea for this issue is that the gov't should pay for college, except it should pay a multiple of the student's increase in earned taxable income averaged over the 5 years preceding and following the degree. High school students would have near zero income, so it would mostly be a multiple of their 5 year average income after graduation.
This pays directly for what the gov't wants (increase in the student's productive utility in the economy), it correlates increasing expenditures with increasing long term tax income, and I think in the long term it would create structural incentives guiding students towards more practical degrees.