Actually you can already update LINK.EXE by using versions from at least the Vista SDK if not newer. I've done that. The downside is that /OPT:NOWIN98 was removed and the setting is effectively always "on" for this, so Win95/98 support is lost. It also doesn't seem to work right for DLL and OCX project types.

C2.exe is basically VC6.0's C2.dll wrapped within an EXE. I don't think it is trivially replaced by another C compiler's code generator because it has to understand VB6.EXE's generated p-code and symbol tables. You'd have to rewrite VB6.EXE's built-in incremental compiler first. That is 99% of the p-code compilation and serves as pass 1 for native compilation.