TYP: Remove  _ensure_type
- [ ] closes #31925
- [ ] tests added / passed
- [ ] passes `black pandas`
- [ ] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [ ] whatsnew entry

@TomAugspurger do we also want to add a test and a whatsnew, or merge these changes into original PR? Thanks! This seems good for now. I don't think we would need any additional tests, but a whatsnew would be nice (fixed regression). ok can revert test. will add whatsnew. No harm in keeping the test. lgtm. w.r.t. test no strong preference, though do we see ourselves getting confused with that in the future? 

Maybe just my lack of familiarity with our subclassing, but not sure why we would want a reindex to return a different type than the caller I think we'll be able to track it back to this discussion.

But yes, I think in general the return type on `_constructor` should be the same as the input, but how we go about encouraging / requiring that is a bigger discussion. Owee, I'm MrMeeseeks, Look at me.

There seem to be a conflict, please backport manually. Here are approximate instructions:

1. Checkout backport branch and update it.

```
$ git checkout 1.0.x
$ git pull
```

2. Cherry pick the first parent branch of the this PR on top of the older branch:
```
$ git cherry-pick -m1 a3642ecb34b8a65a9d899f17475612b3bff411d4
```

3. You will likely have some merge/cherry-pick conflict here, fix them and commit:

```
$ git commit -am 'Backport PR #32633: TYP: Remove  _ensure_type'
```

4. Push to a named branch :

```
git push YOURFORK 1.0.x:auto-backport-of-pr-32633-on-1.0.x
```

5. Create a PR against branch 1.0.x, I would have named this PR:

> "Backport PR #32633 on branch 1.0.x"

And apply the correct labels and milestones.

Congratulation you did some good work ! Hopefully your backport PR will be tested by the continuous integration and merged soon!

If these instruction are inaccurate, feel free to [suggest an improvement](https://github.com/MeeseeksBox/MeeseeksDev).
                