It's not just the incentives
Incentives make the world go round. You know what also does? People.
Many of my friends are fond of saying that the problems of the world are not from people being evil, but instead a result of the incentives of our system, which are such that *this* bad outcome is an equilibrium. There's a weaker thesis here that I agree with, but otherwise I don't think this argument actually follows.
In game theory, an equilibrium is determined by both the setup of the game and the payoffs for each player. The payoffs are basically the values of the players in the game—their utility functions. In other words, you get different equilibria if players adopt different values.
Problems like homelessness are caused by zoning laws, yes, but they're also caused by people being selfish. Why? Because lots of people could just voluntarily donate their wealth to help homeless people. Anyone with a second house could decide to give it away. Those with spare rooms could simply rent them out for free. There are no laws saying you must spend your money on yourself.
A simple economic model would predict that if we redistributed everyone's extra housing, then this would reduce the incentive to create new housing. But look closer at the assumptions in that economic model. We say that the incentives to build new housing are reduced because few people will pay to build a house if they don't get to live in it or sell it to someone else. That's another way of assuming that people value their own consumption more than that of others—another way of saying that people are selfish.
More fundamentally, what it means for something to be an incentive is that it helps people get what they want. Incentives, therefore, are determined by people's values; they are not separate from them. A society of saints would have different equilibria than a society of sinners, even if both are playing the same game. So, it really is true that lots of problems are caused by people being bad.
Of course, there's an important sense in which my friends are probably right. Assume that we can change the system but we can't change people's values. Then, pragmatically, the best thing would be to change the system, rather than fruitlessly try to change people's values.
Yet it must be emphasized that this hypothesis is contingent on the relative tractability of either intervention. If it becomes clear that we can genuinely make people less selfish, then that might be a good thing to try.
My main issue with attempts to redesign society in order to make people less selfish or more cooperative is that you can't actually change people's innate preferences by very much. The most we can reasonably hope for is to create a system in which people's selfish values are channeled to produce social good. That's not to say it wouldn't be nice if we could change people's innate preferences. But we can't (yet).