Sounds like the crankshaft drive pulley has started to fail. It's a common problem which shouldn't cost more than £150 to sort. Providing you use the OE Corteco pulley, the noise will go away for 100k miles.
No need to change the engine at all.
Find another mechanic, who knows the issues with these BMW engines.