BUG: DataFrame and datetime scalar ops may results in incorrect dtype
#### Code Sample, a copy-pastable example if possible

`Timestamp` subtraction resuts in `Timedelta`

```
pd.Timestamp('2011-01-01') - pd.Timestamp('2010-01-01')
# Timedelta('365 days 00:00:00')
```

But it doesn't when broadcasted to `DataFrame`. It's because `DataFrame` op calls
`_try_corce_results` which coerces the result to `datetime64`.

```
df = pd.DataFrame({'a': [pd.Timestamp('2011-01-01')]})
df - pd.Timestamp('2010-01-01')
#            a
#0 1971-01-01
```
#### Expected Output

```
#          a
#0 365 days
```
#### output of `pd.show_versions()`

current master
