For front, get a easy to drive component speaker. Cost: 150 to 250.
For rear, get coaxial speakers. Cost: 80 to 150 (140 can get branded already)
Add a small 4 channel amp to drive them. Cost can start from 100+.
Will have sizable improvement in sound. Other than that, change headunit (non BMW ones please). Main problem is that these BMW ones just do not give such a clean signal. After the conversion to feed signal to aftermarket amps... Music, together with signal flaws are amplified.