Efficient Charity: Do Unto Others...
With respect to the lawyer example, I understand that the lawyer can maximize the good he does by remaining a lawyer instead of working for a non-profit. But if all the most talented/productive people (and thus those with the highest potential salaries in the private sector) took private sector jobs, then only the least talented/productive people would be available to start and run the non-profits. Given that we can expect this low talent pool to make many mistakes, a lot of the high talent pool's donations will be squandered and wasted. So having all the $1,000 lawyers, doctors, CEO etc... stay in the private sector may not maximize the total good achieved.
In my view we need some of the most talented/productive to run the non-profits. Yes they will make less than they will in their private sector occupation and therefore will not be able to personally donate as much. But they will make the overall charity system more efficient. As for the self-interest piece of this puzzle the talented non-profiteers would need to have a strong preference for charity so the gains in utility from their occupation offset the decrease in purchasing power from the lower salary.