Ah, uma coisinha final. Acredito tanto na questão de levar cada linguagem com sua forma de fazer as coisas que, mesmo pensando ser benéficio que se adicionem DU's em C#, ainda acredito que o que deveria ser feito na linguagem seria a checagem em tempo de compilação de exceptions (ao invés de utilizar erros como valores necessariamente). Isso resolveria uma boa parcela dos problemas que as pessoas veem nas exceptions do C# e tornaria a linguagem muito mais robusta.
No entanto, também introduziria problemas de backwards compatibility (na medida em que todo código anterior a isso se tornaria inerentemente inseguro), então a criação disso possivelmente se daria de uma forma semelhante a como C# lida com 'nullable types' atualmente (os trata como recursos opcionais mas indicados, os quais você pode ignorar quando necessário). Acredito que tratar as exceptions como opcionais moveria o problema uma camada pra cima (da mesma forma que penso que a abordagem que tomaram com nullables move o problema pra cima), mas não se pode ter tudo e, de muitas formas, é melhor ter isso do que não ter nada (e enquanto for possível habilitar isso absolutamente pra novos projetos e manter isso como um warning pra projetos externos mais antigos, também deve ser possível equilibrar os benefícios e malefícios até certo ponto, como o nullable faz).