DataFrame.from_records lose dtype info on empty recarray.
```python
In [2]: from pandas import *

In [3]: a = np.array([(1, 2)], dtype=[('id', 'u8'), ('value', 'i8')])

In [4]: DataFrame.from_records(a[:0]).dtypes
Out[4]:
id       float64
value    float64
dtype: object
```

I think the dtypes are incorrect. The record array dtypes should pass through so you get uint64 & int64.

Working on a PR now.

Split from https://github.com/pandas-dev/pandas/pull/20802