Cleaning Up Dissolved Faces And Random Vertexes
It seems to me Limited Dissolve can help in this situation. It can dissolve all vertices between vertices of which the angle of the connecting edges and faces are below a certain given angle value.