Well, I've solved this, by noticing that the fault occurs only after the 'idle hold' timeout. I can print any number of files as long as I follow the previous quickly enough, but if the M84 timeout occurs then the next time I attempt to move axis X I get a short to Vin. (This was pernicious, because when I was testing I'd print one after another and all would go ok, then I'd come back later to do something and it would fail!)
I did have a very very low idle current factor - M906 X1000 Y1000 I5 i.e. 5% of full. That's because my mechanism can't droop (it's X and Y only) so I didn't think I needed much hold current. If I increase the idle factor to a more normal value (I've actually set to 35%) then it can timeout fine and I can still print the next file.
I have no idea why this behaviour started (I've had 5% for months and months), but setting idle current factor to a higher value seems to have stopped shorts being reported, and fortunately the only components I'd got round to replacing so far were cables ie not very costly).