I do not work on a lot of BMWs but it is quite possible that if the head gasket was previously blow that at that time the Oxygen sensor could have been damaged by antifreeze. It should be easy to check by looking at its out put pattern and response on an oscilloscope and or physically removing it and looking for signs of contamination.
You mention that it feels like a rag is stuffed up the exhaust, with a restricted catalytic converter when under full load you can often hear the exhaust gas sounding restricted and just trying to force its way out. A back pressure test of the exhaust system checks for excess pressure build up in the exhaust, also the cat will run hotter and may even glow red or smell.
I would check fuel pressure and fuel volume delivery to see that it is adequate.