Just to follow up on this - it's hard to tell if it's 100% "fixed" because I don't know what it was designed to feel like when new, but it feels about 80% better and overall I'm happy with it.
To recap:
- The elusive TSB didn't actually apply to my build date, so no luck there.
- In addition to the maintenance items throughout this thread, I increased the throttle tip-in fuel map "ip_ti_pvs__pvs__n" by 10% across the low-throttle regime <= 2200 RPM and 5% across the mid- to high-throttle regime <= 2200 RPM using TunerPro (the tuning software) and MS43X (the software to transfer the data back and forth to the car's DME). I intended to do an adjustment of 5% only, but the minimum increment is larger than this (something to do with the table entries being stored as 8-bit values).
- I also disabled the anti-jerk feature, which retards timing on throttle tip-in to supposedly smooth things out, by setting c_tco_min_aj to 142.5C. This means at any engine temp below 142.5C, the feature is turned off (and the engine would never reach this temperature without self-destruction).
It seems a bit ridiculous to resort to tuning to solve an issue like this on a 100% stock BMW but it was easy enough to try and seems to help. The only rationale that makes sense to me is what is explained on the MS43X wiki: The throttle tip-in fuel is extra fuel designed to wet the cylinder surfaces.
With age and carbon build up the surface area of the cylinder may have increased.