This problem is definitely due to a change in MySQL 5.6 for us. It may well be a MySQL 5.6 bug, I'll be reporting it to them too.
Assuming there is no post ID 99999, running the following query shows different results in <5.6 and 5.6…
SELECT IFNULL(DATE_ADD(CAST(NOW() AS DATETIME), INTERVAL a.meta_value SECOND), 'duration is null') AS duration, a.meta_value
FROM wp_postmeta m
LEFT JOIN wp_postmeta a ON a.post_id = 99999
LIMIT 0,1
MySQL 5.5 result (which is expected by the Events Calendar code):
duration: "duration is null"
meta_value: NULL
MySQL 5.6 result:
duration: "2013-04-03 17:27:49.000000"
meta_value: NULL
Interestingly, if we just do the following query the results differ:
SELECT IFNULL(DATE_ADD(CAST(NOW() AS DATETIME), INTERVAL null SECOND), 'duration is null') AS duration
MySQL 5.5 result:
duration: "duration is null"
MySQL 5.6 result:
duration: "duration is null"