Correct check when slicing non-monotonic datetime indexes
The intention of #37819 was to deprecate (removed in #49607) the special case behaviour of non-monotonic datetime indexes, so that if either slice bound is not in the index, a KeyError is raised.

However, the check only fired correctly for the case where the lower bound was not in the index and either the upper bound was None or it was _also_ not in the index.

Correct the logic here and adapt the one test that exercises this behaviour.

Closes #53983.

- [x] [Tests added and passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#writing-tests) if fixing a bug or adding a new feature
- [x] All [code checks passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#pre-commit).
- ~Added [type annotations](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#type-hints) to new arguments/methods/functions.~
- [ ] Added an entry in the latest `doc/source/whatsnew/vX.X.X.rst` file if fixing a bug or adding a new feature.

cc @phofl.

This _might_ need to go through a deprecation cycle since although the intention was to warn for this behaviour through 1.5 and remove in 2, users who only had upper slice bounds that were missing would not have seen that warning. Any thoughts here? > I think this would be okay to note as a "bug fix" in 2.1 since the original behavior was deprecated but not thoroughly enforced.

Thanks, added a bugfix entry. Awesome, thanks @wence- 