BUG: Preserve data order when stacking unsorted levels (#16323)
This should fix the df.stack() problems in #16323-- the levels being used to build the new index were those of the original frame, which fails when the levels get sorted.

 - [X] closes #16323
 - [X] tests added / passed
 - [X] passes ``git diff upstream/master --name-only -- '*.py' | flake8 --diff``
 - [X] whatsnew entry
