Restrict special datetime handling to parts of messages

This is an alternate implementation of #826.
Maybe we should just copy the fields and then look at ``fields['timestamp']`` rather than iterating over the keys and checking each of them to see if they're called ``timestamp``?