Check events: Set correct next_check, only update status if needed.

When removing the execution time estimates I removed the switch that
set temp_host and temp_service in the rescheduling loop. As a result,
when setting the new next_check times, the last temp_host or
temp_service from the event selection loop would have its status
repeatedly updated with incorrect next_check times until finally being
updated with the correct time, or a segfault would occur if there were
either no host checks or no service checks in the rescheduling window.

These changes fix this, and also only update host/service status if the
next_check time (with second resolution) changed.