Also, I have a rudimentary idea how to fix this. So if anyone who's more competent than me would like to have a go at it, please do so.
Basically found a non-profit ad agency for free software. Basically the agency would create turnkey ad and branding concepts for certain free software projects that would like to have it and in return they get 5% of their donations, for example. All of the money gets reinvested back into the advertising for the member software projects. Also, it could be very easy, the ad agency would, in broad strokes, just have a competition parity strategy where they essentially do whatever the competition does, in broad strokes, for their advertising and "just" adapt it to what the free software project needs.
Yes, it's some random "idea guy" on the internet coming up with something that's coherent and smart sounding. So take it for what you will.