 EHN: fix unsigned int type problem of the result diff()
An unexpected output type(float64) occurs to diff() when using uint
type. So fix it by restoring original dtype after storing it

Fixes #28909

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


What do you think about this problem with the code? @jreback 
For numeric types, `Series.diff()` introduces NaNs, which are a float. These can't be cast back to int / uint.

I'd recommend using one of the new nullable integer dtypes. Thanks for your help.