[Utils] Hoist ValueMapper out of per-instruction remap loops in CloneFunction (#216014)
Remapping heap-allocates a ~500-byte Mapper per call and the clone paths
call these once per instruction. Since every public ValueMapper method
flushes on exit, a single instance of ValueMapper is used per loop
reducing allocations from 500*N to 500 per loop.
This change was developed with AI assistance. I have reviewed, tested,
and understand it and take ownership of it.