Float conversion makes fillna lossy
For int64 data near the int64 implementation bounds, `astype('float64')` or `ensure_float64` is lossy.  The motivating case is `PeriodArray.fillna`

```
dti = pd.date_range(pd.Timestamp.max - pd.Timedelta(nanoseconds=10), periods=5, freq='ns')
pi = dti.to_period('ns')
parr = pi._data
parr[2] = pd.NaT

>>> parr.fillna(method='pad')
<PeriodArray>
['NaT', 'NaT', 'NaT', 'NaT', 'NaT']
Length: 5, dtype: period[N]
```