> I know only a few ORM's but it seems they end up just adding another layer of DTO objects that are entirely separate from the domain classes anyway.
Entity Framework in particular has come a long way in this regard. Particularly owned & complex entities, value converters, etc.
https://learn.microsoft.com/en-us/ef/core/modeling/
> Worst case it creates a weird database-contaminated domain model that's hellish to maintain.
CQRS is good for this because it forces you into using a different write and read model. My write models are domain objects and my read models are DTOs that feed the UI and via projection I can shape them without issue.