Can you upgrade your hosting? I’ve had a very similar query running on AWS that is fine with 1700 events and meta_query that also had location.
Another option for you (if it’s always the same query i.e. today as your queried date) is to use transients to store the result.
$events_arr = get_transient('events_running_today');
if (!$events_arr) {
$expiration = 2 * 60 * 60; // time in seconds
// run your existing query here
$events_arr = // your query
set_transient( 'events_running_today', $events_arr, $expiration );
}
// etc etc