"but the altitude part of ADS is still derived from Mode S transponder altitude, whose encoder is barometric"
Not always.
At least, ADS-B format retains both ways of reporting barometric as well as gps altitude. Different bit flags in the ads-b message need to be used in order to distinguish different readings.
At least, that is what I got from reading technical docs on the ADS-B message format.