Let me introduce you to people who want more than ROI:
http://en.wikipedia.org/wiki/Impact_investingThere are a variety of ways you could structure things. A non-profit could take loans or sell bonds. I've heard talk of a pay-for-success model for public-good bonds. [1] The non-profit could create a for-profit subsidiary, like Mozilla does. A non-profit could enter into a joint venture (e.g., with an aerospace company).
I think the main barrier to approaches like this is attitudes like yours: for-profit people often have a hard time of steering by the public good. And, of course, the mirror attitude, where non-profit people are suspicious of anything that looks like capitalism. But there's no necessary conflict; the whole theory of capitalism is that companies are making the world better. And if you want to make the world better, the best way to do that is sustainably, and for-profit companies have done a lot of great thinking on how to stay in the black.
[1] http://nonprofitfinancefund.org/pay-for-success