Signal drift, try adjusting the overscan to wrangle it in place for some time (it will still drift after some time though). Most likely something in the chain thinks you're running everything at 30fps when you run it at 29.97 (or the other mismatches). Over the 10 - 20 seconds that .03 leftover adds onto itself, and the box/driver/something don't know what to do when it gets info from the middle of the frame where it expects the beginning, and probably tries to auto adjust to the signal. You shouldn't run them at different framerates though, and it is far from reccommended. Putting a decent scaler in between can also solve this issue.
Can you check if the 30fps camera has a NTSC mode? Or if the PTZ can be run in PAL mode? Which camera models is it? If they both have 24/25fps modes that might also solve it.
This is probably one of those requests that sounds simpler to implement than they are, but it would be nice to have the option to use a scale of 0 to 1 to move through these. 0 = linear, 1 = exponential. 0 = easing in, 1 = easing out.
This would mean that the in + out option would not be available in this scenario, but that would be possible to math around in implementations. It would also bring about the option to animate the easings which would be fun!
The main purpose of this would be to neat up some nodes with separate curve modes and easings for 2d/3d/4d points which can look a bit excessive at the moment.