BUG: GH11847 Unstack with mixed dtypes coerces everything to object
- [x] closes #11847
- [x] tests added / passed
- [x] passes `git diff upstream/master | flake8 --diff`
- [x] whatsnew entry

Changed the way in which the original data frame is copied (dropped use of .values, since it does not preserve dtypes).

## [Current coverage](https://codecov.io/gh/pandas-dev/pandas/pull/14053?src=pr) is 85.24% (diff: 100%)
> Merging [#14053](https://codecov.io/gh/pandas-dev/pandas/pull/14053?src=pr) into [master](https://codecov.io/gh/pandas-dev/pandas/branch/master?src=pr) will increase coverage by **<.01%**

```diff
@@             master     #14053   diff @@
==========================================
  Files           143        143          
  Lines         50849      50851     +2   
  Methods           0          0          
  Messages          0          0          
  Branches          0          0          
==========================================
+ Hits          43343      43346     +3   
+ Misses         7506       7505     -1   
  Partials          0          0          
```

> Powered by [Codecov](https://codecov.io?src=pr). Last update [837db72...6a381ce](https://codecov.io/gh/pandas-dev/pandas/compare/837db725b147104be4b0e5cbfd49868971ee4f78...6a381ce87f85e4ec1823809fcd207765997f6433?src=pr) can you rebase / update?
 @jreback is it ok now?
 @jreback changed as suggested and passing.
 @kordek  can you add a category dtype the tests as well. lgtm otherwise. @jreback I've changed the tests as requested (if I understood correctly). thanks @kordek 