Preserve Alignment Between Index and Values for Non-Monotonic Stack
- [X] closes #20945
- [X] tests added / passed
- [ ] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [ ] whatsnew entry

Not overly familiar with this code so submitting for review as there's probably a better way of going about it. The root cause of the referenced issue IIUC is that the index labels of the caller are non-monotonic. `stack` essentially takes values and labels from the level that is getting pushed down into the rows with an implicit assumption that both are monotonic, hence the index/values get misaligned.

This breaks at least one other test so not ready to merge, but looking for feedback on:

 - If there's a better way to align the values with the labels in this function AND/OR
 - If we make any guarantees about the order of the labels for the level(s) being moved in this function