The only way to introduce that in bitcoin without hardforks is to use a sidechain. Say, based on MimbleWimble.
Actually, no, CT for example can be a softfork change to Segwit. That is just one way to go about it. A hard fork is not a prerequisite.
Do you really want to softfork to add that functionality as a default? I agree with Valle and rather add that as a "extra"
feature as a sidechain transaction. If Bitcoin goes full anonymity by default, it will get banned all over. {yes, the die hard
supporters wants that, but the average Joe are satisfied with pseudo-anonymity}
