 ENH: making mode stable/keeping original ordering
- [x] closes #39007
- [x] tests added / passed
- [x] Ensure all linting tests pass, see [here](https://pandas.pydata.org/pandas-docs/dev/development/contributing.html#code-standards) for how to run them
- [x] whatsnew entry

This is follow up of #39009 but for `mode`: now keys returned by `mode` are in the original order. This is also improvement of the code quality as `mode` now uses the same code path as `value_counts`.

Fixes a performance regression of #39009.
