There should be a rule whereby charities are required to have a large percentage of their jobs given to the class they're trying to help.
This could help make the size and number of said charities to be self-regulating with the problem they're trying to solve. They will grow in number whilst the problem is large, but as it subsides they naturally go down. All at the same time giving those people who are in need, money that would be otherwise given to people who don't necessarily need it from that source.