BUG: Fix Series.astype and Categorical.astype to update existing Categorical data
- [X] closes #10696
- [X] closes #18593
- [X] tests added / passed
- [X] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [X] whatsnew entry

Couldn't find an issue about it, but the same problem described with `Series.astype` in the linked issues was occurring with `Categorical.astype`.  Put in a fix for that too with some code very similar to what was done in #18677 for `CategoricalIndex.astype`.  Could probably consolidate the two into a single helper function, potentially as part of #18704.