DEPR: idxmin/idxmax with all-NA
- [x] closes #51276 (Replace xxxx with the GitHub issue number)
- [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
- [ ] 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.
- [x] Added an entry in the latest `doc/source/whatsnew/vX.X.X.rst` file if fixing a bug or adding a new feature.

As discussed in last week's dev call.
Thanks @jbrockmendel  Am I understanding this correctly that I'm supposed to write this now each and every time I use `idxmax`?:

```python
s = pd.Series([None])

if not s.isnull().all():
    m = s.idxmax()
else:
    m = np.nan
```

instead of just this with the originally promised behavior of "If the entire Series is NA, the result will be NA."

```python
s = pd.Series([None])
m = s.idxmax()
```

this is annoyingly verbose. Or what is the correct way to approach this? 
> this is annoyingly verbose. Or what is the correct way to approach this?

Not only is it verbose, I find it less intuitive especially considering the parameter skipna.

`pd.Series([None]).idxmax(skipna=True)` resulting in `np.nan` (and similarly for `pd.DataFrame.idxmax`) is (for me) the expected behavior.
