So, that's the reason why.
No, don't touch the model, don't touch the database.
The date MUST ALWAYS be stored in UTC. Obligation, no way out.
If you store different offsets, then a user could change its user parameters and then your system would be unstable of in some case could affect the security.
NEVER do that.
You need to set the offset every time that you want to display the date.
with a JDate object, you can do :
$date->modify('+2hours');
But the best is to apply the user's offset.
You can check JDom :
html.fly.datetime$user = JFactory::getUser();
$date->setTimezone(new DateTimeZone($user->getParam('timezone', $config->get('offset'))));
EDIT : Sorry, I reviewed the code. Now it is better.