Thought I'd post an update in case anyone searches this thread later on.
Two weeks ago, I finally got the car scanned, and it turned out to be an oxygen sensor (code P0155 - Bank 2, sensor 1). So I started shopping around for a replacement, looking at an inexpensive alternative to the Bosch one. While doing so, a friend and I decided my car deserved to be heard without a muffler. So we cut the muffler off, and on the test drive I could redline normally (why? I don't know). Check engine light was still on though. Ran straight pipes for a week, then decided to put it back to my M3 setup (had to keep looking left and right for cops, damn it was loud). Anyways, I'm back to my old setup and I can still rev to 6500 rpm, and even beyond. Check engine light still showing. I am still going to change the oxygen sensor, but I can't figure out what happened for my car to go back to normal.
Thanks a lot for your replies guys, appreciated your help!