Time spent in the vblank routine varies from game to game. I've reversed (either fully or partially) lots of games in my time on this planet and I've seen minimal vblank routines which complete in 1 or 2 scan lines and extensive vblank routines which take 30 to 40 scan lines. Best thing is to play a few of your favourite games in MAME and drop into the debugger (if you drop into the debugger ad-hoc then you'll usually drop in at the start of the vblank) when there's a large amount of stuff going on on-screen. Then set a breakpoint at the end of the routine and continue execution. That way when the breakpoint is triggered you can see where the raster has got to.
The golden rule is USUALLY to ensure the vblank routine ends BEFORE the raster enters the visible screen area (the area that can possibly be updated by your game engine). Don't forget that the visible screen area varies from game to game (sometimes starting at scan line 8, sometimes at 16, etc).
For comparisons :
Pac-Land - vblank start = 240, vblank end = 241 (pretty much just increments the in-game counters and polls the P1/P2 inputs)
Super Locomotive - vblank start = 224, vblank end = varies from 15 to 17
Out Run - vblank start = 223, blank end = 229
The Out Run vblank does the following :-
copies palette data from rom to palette ram (only when loading a new stage)
updates the tile maps
cycles the sky palette (only when loading a new stage)
fades palettes from one to the next (only when loading a new stage)
reads buttons/steering wheel/accelerator/brake/gear stick
does outputs (motor control/etc)
increments master game timers
increments in-game timers
updates the on-screen timers
prints number of credits in the machine
sets the position of your car on the road
checks for service mode button being pushed
It also varies based on your target hardware. This is because later/more advanced hardware will abstract tile layer scrolling, sprite movement, etc to a level where the movements will only ever happen during the vblank (as dictated by the hardware) so you're free to update sprite positions, scroll tilemaps, etc during the active raster period as the hardware won't actually move them until the vblank.
I don't know whether Pac Man hardware does this or not, I do know that L System hardware does this.
The above rules seem to only apply to sprite movement and tile map scrolling. In your case you don't actually have a scrolling tile map as such as you're cheating to scroll the tiles so I'd doubt the rules apply to that! You can usually change tiles or turn them on/off, etc instantaneously, without needing to wait for the vblank.
You'll only really find out whether you're getting artefacts (i.e. if your tilemap scroller is taking to long) by running it on real hardware. MAME lulls you into a false sense of security sometimes. Believe me, I talk from painful experience in this respect!
In theory you could run the entire game engine from inside the vblank routine, there's nothing to stop you from doing it. I've personally never seen an example of a game written that way but there's a first for everything! Like you say, if your vblank routine has not finished by the time the raster hits the position for the vblank routine to start then you WILL drop frames in your game, guaranteed.
As to which scroll method to use, well that really does depend heavily on the style of game you're planning on writing. Some game styles suit the second style better, some suit suit the third style better. You really need to decide on game style before you can make the choice of scroller style.