Got the idea from this post to change my query : How to “orderby” the first array in a meta_query that uses multiply keys?
I moved the state query into the larger array of queries, freeing the ‘meta_key’ value to be assigned to event date
$args = array(
'post_type' => 'tf_events',
'meta_query' => array( $relation, $date_query, $date_query2, $state_query ),
'posts_per_page' => $limit,
'meta_key' => 'tf_events_startdate',
'tax_query' => array( 'relation' => 'AND', $type_query, $host_query ),
'order' => 'ASC'
);
add_filter( 'posts_orderby', 'my_posts_orderby_date', 10, 2 );
function my_posts_orderby_date( $orderby, $query ) {
global $wpdb;
return " CAST( $wpdb->postmeta.meta_value AS DATE ) " . $query->get( 'order' );
}