BUG: Series/Index arithmetic result names with NAs
- [x] closes #39757
- [x] closes #22041
- [x] tests added / passed
- [x] Ensure all linting tests pass, see [here](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#pre-commit) for how to run them
- [x] whatsnew entry

looks fine can you add a whatsnew note whatsnew added + greenish Certainly no objection to the modification here, but I do wonder if we should be changing the API to narrow what is allowed as a Series name or DataFrame label. For example, from #39757,
```
series_a = Series([1,2,3], name=np.float64(1.0))
series_b = Series([1,2,3], name=(np.float64(1.0), np.float64(2.0)))
pd.concat([series_a, series_b], axis=1).columns.sort_values()
```

still fails. I am wondering if we should change the API to only allow basic primitive types (Boolean, int, str, float?, perhaps some others) and tuples of primitive types, rather than trying to chase these issues down. the problem is that the name can be any pandas primitive or tuplr if those (as we allow this for index labels) which doesn't it much  @jreback - I think you're saying that even if we were to add some restrictions, `np.float64` (and hence, tuples of such objects) should be allowed as a name. Is that right? yes ultimately we allow these as names (well have to be hashable) or we could inhibit a number of downstream ops