This would mean custom numerical types wouldn't be drop-in compatible with existing numerical *code*, which I am under the impression is what Case Van Horsen wants (and is a desirable outcome).
I think it looks too much like hidden magic to me. Explicit is better than implicit.
If I were doing this, I wouldn't change the current behaviour by default. I'd include a function which would change the built-in functions, if required.