from what I can see it is because you are validating $value
against this $$date_key.$coach_object
and this is created by doing this.
$start_time = $_POST['acf']['field_58c2cb3c85ad0'];
$date_key = strtotime($start_time);
$coack_key = 'coach';
$coach_object = $_POST['acf']['field_59066c838afa6']; // this works
You must do the same thing in your validation filter and then query against this value and not $value
which is passed to your filter by ACF.