I made some progress on the switches last night. The engine starter panel is now all wired up (I'll need to solder the wires to the rotary switches once I'm happy it's working), and the switches are in place on the other engine panel. I'll need to finish wiring that one up and test it tonight.
Unfortunately adding a wire to the OFF position on the rotary switches did not solve the problem I was having with it skipping positions. In fact, having both switches working made it worse, with the right engine switch affecting the position of the left engine switch.
I'm sure the switches are wired up correctly as each position shows up as a separate button press in the Windows Game Controllers tool.
I suspect it's either a conflict between FSX and FSUIPC, or I'm just using the wrong control command in FSUIPC.
I checked FSX and couldn't see any conflicts, so tonight I will try using the 'Magneto x Set n' command (where x = engine number and n = 0 for OFF, 1 for RIGHT, 2 for LEFT, 3 for BOTH). Currently I'm using 'Magneto 1 Off', 'Magneto 1 Right' etc.
If that fails I'll try setting offsets.