I agree with you that for any given $20, it's probably more effective to give it directly to an outreach program. But this doesn't scale. Consider a charity that wants to build housing for the homeless. Well now they need to buy property. But now they need a holding company or some business structure to legally own that property. That holding's company has fees for bank accounts, po boxes, people to check the po boxes, etc. Now the business decisions matter: how to structure that investment to minimize tax or properly insure it. Then you need to build on that property. That requires permits to be filed, and construction plans to be drafted. now you need educated business people to manage this. Those people don't work for free. So now you're paying salaries. So now you need to manage that situation. Who do those people report to, how much do they get paid, etc. Now you have a corporate structure (and significant overhead).
My solution is to introduce salary caps. So that NGO's cannot compensate any employee more than some modest amount. Bonus if the state or local gov could give people tax breaks (fed would never go for this) for working on an NGO. So, say a lawyer or accountant could take a few months off their high-stress, white-collar job and work for an NGO for part of the year, make enough for rent, reduce their tax bill, reduce their stress levels for a while, and help the community, then go back to "real" work.