Let isocalendar() return int32 (no NaT) and float64 (in presence of NaT)
- [x] closes #54657
- [ ] [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.

This should align with the other dt accessors, like dt.year, dt.month etc. which return "int32" without NaN and "float64" with NaN.

If this PR is considered valid, I'll fix the failing doctests. For the typing errors I would need a little help. This pull request is stale because it has been open for thirty days with no activity. Please [update](https://pandas.pydata.org/pandas-docs/stable/development/contributing.html#updating-your-pull-request) and respond to this comment if you're still interested in working on this. I'm still waiting for a comment from @pandas-dev/pandas.  Thanks for the PR here so far, but let's reopen this PR once another core developer has chimed in on the original issue. 