Ownership
If a programmer takes ownership of a project, they desire to see it succeed--they look for ways to improve it and make it better--they try to tackle the tough problems.
It sounds like the problems you are having are stemming from a lack of ownership of the project. When this happens, a developer will blame others, not care about the project, not work well with other team-mates, not communicate, etc.
Ultimately, you'll need to get the team to have a sense of ownership in the project.