You can use an acf/load_value filter https://www.advancedcustomfields.com/resources/acf-load_value/.
add_filter('acf/load_value/name=banner_image', 'override_banner_image', 10, 3);
function override_banner_image($value, $post_id, $field) {
if ($some_condition) {
// do conditionals and set value to a different attachment ID
}
return $value;
}
You’d still need to add to this function whenever you wanted to add more conditions to it.