Is there a way to fix these weird faces without adding more polygons?
While we model using quads, blender always draws to screen using triangles. The current triangulating algorithm for quads always triangulates the same way, while the newer ngon triangulating is more intelligent, see this question for some more insight.

While the vertex order used to make each face could be re-arranged to get a better result, I don't think there is an easy way to do that.

You should find that a subsurf modifier will hide most of the effect you are seeing.