Thanks Tony, all good ideas! Most of that I've checked - it's got a new dizzy (I rebuilt mine and the NE coil lost a connection somewhere

), plugs have been checked, timing belt tension is good (was an issue before, brand new tensioner was DOA), cam timing has been checked. Just got to sort the fault code, all indications are that the sensor is faulty.
5SGTE, great idea, I never thought to actually look for a failure mode in the ECU. I've just pulled it out and checked it - I've never seen a 26yr old PCB so spotless! All components look perfect, and no flaws in the board or coating.
Thanks for the ideas guys, keep them coming!