I'm not sure which one of these are actually responsible for most of the annoying camera shifts, but the InterfaceIFace class has the methods lookAt(), lookAtCityOffset() and lookAtSelectionPlot(). They are implemented in the exe, so you can't change their behaviour, but you can track down all their calls and add an extra !isAutoplay() check or similar there.