The limitations are quite strict, maybe Vellum doesn't make sense here. Thinking a bit more I found out that I just need to stay on the y-plane and slide 2 points at once along the adjacent edges to keep the faces planar.
With ramps I create a weight attribute relative to the x and z bounds (cyan). New vectors are calculated by comparing adjacent points, multiplied it with the attribute from the ramps and looped according to the point count. Left: loop with nodes, right: a for loop in vex. The node version seems to be more sensitive with extreme values (non-planar faces are red).
Thanks to Matt's cgwiki and some other posts here, this was an interesting lesson in vex!
VEXPlanarTool.hipnc