 BUG: out-of-bounds pydatetime with errors='coerce' and non-ISO format coerces all elements to NaT
- [ ] closes #50255 (Replace xxxx with the GitHub issue number)
- [ ] closes #50266 
- [ ] [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
- [ ] 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.

I haven't added a whatsnew note for #50255 , as this feature (parsing pydatetime / datetime / np.datetime64) objects with non-ISO formats wasn't available to users in the previous release anyway

----

This is much easier to review with "hide whitespace", as many of the changes are just changing a level of indentation

![image](https://user-images.githubusercontent.com/33491632/207829424-890402ed-89bc-4796-82f9-8a4b23d3eef4.png)

@jbrockmendel @mroeschke sorry for the ping, just wanted to ask if we could get this one in, as:
- it unblocks #50361 
- which in turn unblocks #50242 

That would conclude the major `to_datetime` block of work I was planning to do - anything else would be relatively minor / fixing anything that comes up

Thanks 🙌 