I don't know of any way to do this for sure, it will require a bit of experimentation. You might want to try stopping the grid from painting until you have moved all of your controls and see if that helps. What you could do is use the BeforeColRegionScroll event and call grid.BeginUpdate. This will prevent the grid from painting.
Then in AfterColRegionScroll, you could position your own controls and then call EndUpdate on the grid to let it paint again.
I'm not sure how much that will help, if any, but it seems like it might be worth a shot.
Or perhaps what you can do is hide your controls in BeforeColRegionScroll and then move them and re-show them in the After event?