I strongly disagree about enforcing (which is what we do, as a language, by not offering one neutral or canonic one) different NULLs on different levels. It's useful when you want it, and then nothing is there to prevent you from crafting one, but mostly not. I argue that the same applies to values like NaN, Infinity, -Infinity, et cetera.
But I agree that adding a NULL works best as a separate discussion, and that zero_type is a well defined and rooted function that would be a can of worms to change incompatibly. (And it's not like anyone would find it suddenly intuitive or descriptive under the new behaviour; its name and mode of functioning is much too esoteric and unguessable.)