I've found an alternate workaround in DAX that relies on the structure of my source data:
MajorMinor = DISTINCT(SELECTCOLUMNS(Data, [Major], [Minor]))
where I can guarantee that all of the possible products are present in my data. This is just as fast as it ought to be.