BUG: fix combine_first converting timestamp to int
- [x] closes #28481
- [x] tests added / passed
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry

This fix introduced two regression, but it appears like the fix only made the API consistent. Previously the failing regressions where inconsistent say `df1.combine_first(df2)` would not return the same result as `df2.combine_first(df1)` for the failing cases, more on these in the code comments.

Let me know if there is a better way to handle this.