If you have the classification in fields can do this to select the mix you want:
~mix=7,2,{[Decade]=80 [mood]=1 [genre]=[Post Punk]},1,{[Decade]=90 [mood]=1 [genre]=[Post Punk]},1,{[Decade]=90 [mood]=1 [genre]=[Post Rock]},1,{[Decade]=90 [mood]=3 [genre]=[Post Rock]},2,{[Decade]=90 [mood]=3 [genre]=[Indie Pop]}
However the list comes out shuffled. Sorting it on that order is trickier, not sure it can be done with ~mix.
*I think* MC lacks an aggregation operator, perhaps you can request one as a new feature. It could work similar to Mix:
~join={Criteria1},{Criteria2},{Criteria3...}
Then you could have:
~shuffle ~join={[Decade]=80 [mood]=1 [genre]=[Post Punk] ~n=2},{[Decade]=90 [mood]=1 [genre]=[Post Punk] ~n=1},{[Decade]=90 [mood]=1 [genre]=[Post Rock] ~n=1}, ...