Thanks again edber. I have followed what you said and with the aid of google have done:
Cleaned MAP sensor. Wasn't too badly oiled but cleaned all the same.
Cleaned turbo vacuum valve filter membrane. Was rather sooty but left it soaking in carb cleaner and refitted.
No need to clean EGR vacuum valve filter membrane, EGR is blanked.
I took out the EGR stat when cold to try blow throw it and there was a little resistance (just about breathe through it).
I have a feeling I have a faulty MAF because apart from the unplug test (car runs like crap with MAF unplugged) all the symptoms seem to match. I checked to make sure it hadn't been replaced with a new one and thus the DDE needed coding/updating but there is no mesh in there so that's a relief (I have DDE3.0 according to DIS). I then went to check it's live data to compare it to throttle whilst driving and here's where I'm stuck again :(
Using the most up to date software I can find (DIS v57, Ediabas 6.4.7, INPA5.0.2), I cannot get any 'live' data. What I want are those graphs I have seen in INPA. The problem is that this INPA only has DDE5.0. Mine is DDE3.0 and so when I try to look at engine it throws an error.
Sooo, I tried to install INPA3.0.1 on another laptop (XP this time) but I don't think it works with my USB OBD cable (BMW OBD Diagnostics Cable Code reader Ediabas Inpa DIS | eBay). Error after error but stuck on this now...
ApiInit: Error #129
API-0009: EDIABAS NOT FOUND
API initialisation error. No API calls possible.
As you can see, I'm trying my pants off trying to get to the bottom of this but it's brick wall after brick wall. I may just have to bite the bullet and try a new MAF.