Changing post content on save, using updated fields

Try to use the post object provided by the action as the second parameter instead of getting it from database:

function change_event_slug_on_save( $post_id, $post ) {
    ...
}

add_action( 'save_post', 'change_event_slug_on_save', 10, 2 );

With this you can remove the line $post = get_post($post_id);


EDIT:
Tribe Events Calendar has it’s own actions for saving an event: tribe_events_event_save and tribe_events_update_meta. Since the event date is saved in post_meta you should use the second action:

/**
 * @param int     $event_id The event ID (alias post ID).
 * @param array   $data     The saved meta fields. The new date should be somewhere in this array
 * @param WP_Post $event    The event itself (alias $post).
 */
function change_event_slug_on_save($event_id, $data, $event) {
    ...
}

add_action('tribe_events_update_meta', 'change_event_slug_on_save', 10, 3);