Here is some work I did on this earlier this year. I tried a few routes, and couldn't find any obvious, consistent wins. It was easy to collapse monomorphizations for many simple functions, but such functions have little impact on compilation time (they get immediately inlined by LLVM presumably).
I still think there's lots of opportunity here, and maybe with a MIR-based compiler the logic of analyzing functions for candidates won't be so terrifying.