You use the default empty value, and have an extra field for missingness. Than you have real type safety.
Real type safety is sum types. If I need to express something that is present or missing, I should use a Maybe monad.
Having an extra field for "missingness" is less safe because the type system won't enforce that it is either missing or set, you could have it set to a value but marked as missing which is still ambiguous.
That's a "cure" worse than the disease.
If missing data is a valid value, pick a valid way to encode it. Null might work, but realize you could have to reason for the value. Actually missing, or just not collected it recorded.
I concede there may be no difference in those meanings.
What if the data is actually missing? How else do you record that information?