REF: check can_hold_element instead of try/except
`_can_hold_element` is not well-documented, and in local testing it does _not_ match my intution of "we could do `self.values[:] = element` without raising".  But adding two assertions in `fillna` _does_ work in all the tests:

```
         # fillna, but if we cannot coerce, then try again as an ObjectBlock
        try:
            # equivalent: self._try_coerce_args(value) would not raise
            # Note: we only call try_coerce_args to let it raise
            self._try_coerce_args(value)
            assert self._can_hold_element(value)
        except (TypeError, ValueError): 
            assert not self._can_hold_element(value)
```

(at least after patching the `DatetimeBlock` and `TimedeltaBlock` implementations)
if you can update to those comments, otherwise lgtm. Follow up coming shortly, let’s make elif change there @jreback gentle ping for this and #27229; next-steps in the works for both of these thanks @jbrockmendel if you can do those followups in next PRs