It would be nice to have a WaitVBL command that just waits for the blank and then returns, but alas we don't got one. At the moment you have to flip at the same time as the vblank wait, and like you say it wastes cpu time.
You could use a timer to estimate when the vblank is about to occur and trigger a flip?
You could use a timer to estimate when the vblank is about to occur and trigger a flip?