We managed to get past this issue by adding this to our custom theme's THEME.theme file:
function THEME_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
if (str_starts_with($form_id, '<start of webform id>') { // client occasionally made changes that altered form id
$form['#cache']['contexts'][] = 'session';
Drupal::service('page_cache_kill_switch')->trigger();
}
}