I agree that well-defined and documented interfaces, with infrastructure that enforces them, would be better than workarounds such as I described. But all this takes work, and people keep finding reasons to give higher priority to other matters.
With regard to traits etc., I’ll point to this thread on multiple traits as evidence that some of the developers (a) recognize these issues to be important and (b) understand that a good solution is likely to be difficult.