Ok. Turns out it the code does simply rely on the 1 in 9 chance. This has uncovered another issue, for some reason as mentioned in my first post my emulator initiates the latch (or the CBM kernal does) as $4289 whereas the correct value according to VICE is $4826. If I hardcode my emulator to latch the value of $4826 the 1 in 9 chance hits and Skyhawk works properly. If I leave the latch as $4289 the routine hangs. Too late tonight to work out why latch value is wrong but I think understanding this will lead to understanding the whole timer issue.
Thanks and I'll keep you posted on what I find.
It's great to see so much enthusiam for the Vic 20.
Problem solved. Turns out the internal roms I was using were different to those VICE uses and the kernal set different latch values. Just changed to the VICE roms and problem solved.
Thanks for all the help, I'm sure I'll be back soon asking more questions!