touch() is cheap, but apply() can be costly. Internally, it calls your controller's apply method and copies the SimpleVector states again back into the mesh in updateMesh(). It also updates the bounding box. It should help to group your operations and apply them all in one call. Or you can simply call your apply-method directly several times if that is needed and make one final call to updateMesh() yourself omitting the call to Mesh.applyVertexController() completely. That might be the way that causes the least changes in your code.
I'm a bit disappointed that libgdx doesn't do any good in this case...i'll leave support for it in anyway, but i expected more from it...