The ideal way to do it is have a look up table of the currents (so duty cycles) for microstepping then when the step frequency is above a certain threshold change the values in the table to the full stepping currents. This is because the motors perform better at higher speed. Sounds like you might already be planning that as you mention 'transitioning'?

Eight micro-steps per step is generally plenty. I didn't bother with 16 but by all means try it as it's easy enough to put the extra values in the code. I did it on a PIC.
What are you using to control the PWM?

On my machine it sounds a lot smoother on 1600 step/rev than less. Whether that actually gets better feed-rates or not I can't tell as I'm limited by the kernel frequency in mach3.