Well, despite the bloody rain we had a go at the problem and couldn't get an answer.
We were looking to see if we could get the ECU to tell us what voltage it thought the battery voltage was at but my bluetooth OBD adapter wouldn't fire up in the 2006 D22. I've a feeling that the D22's OBD port is not OBD-II compliant or it's missing a power line that the OBD adapter is needing (because the OBD port in my 2009 D40 - which we then tried the adapter in and it worked) does have the power lines. I had a feel of the back of the OBD plug in the D22 and it seemed a little light on wiring.
Anyway, because we couldn't tell what the ECU was actually reading, and because it was a new battery and a new alternator (both were nice and shiny) we're assuming that there's some resistance somewhere between the power and the ECU, causing the ECU to THINK that the voltage is lower than it actually is and therefore instruct the alternator (regulator is built-in) to provide a higher voltage.
We had the engine running and the air conditioning going. Measured at the battery, my multimeter reported voltages of 15.6-15.8V. That's going to kill the battery fast. After turning on the headlights the voltage fluctuated from 14.6 to 15.2V. I think the lights should stay on for now!
What I didn't say was that I'd previously (about 10 mins beforehand) checked my multimeter with a lab power supply, and it's accurate to within 0.05 of a volt (at 14.10V, my multimeter reads 14.15V), so my multimeter reading is very close.
So, where to go from here? The connections will be checked (in particular the earth points), but I was thinking that you should replace the fuse to the ECU. Don't just check it, pull it and put a new one in. Some fuses (either close to or under-rated) get warm, and when they get warm their resistance increases dramatically, lowering the voltage to whatever is being supplied.
It's an easy, cheap thing to try.
Does anyone else have any ideas what could be causing this?