WPQuery loop not giving expected output

It was a little bit hard to understand the question at first, but… If all you want to do is to sort properties by some custom field, then there’s no need to create custom WP_Queries and all that code you wrote…

All you need to do is to add sorting params to the main query using pre_get_posts action:

function sort_properties_by_custom_field( $query ) {
    if ( ! is_admin() && array_key_exists('post_type', $query->query_vars) && 'properties' == $query->query_vars['post_type'] ) {
        $query->set( 'meta_key', 'sale_price' );
        $query->set( 'orderby', 'meta_value_num' );
        $query->set( 'order', 'DESC' );
    }
}
add_action( 'pre_get_posts', 'sort_properties_by_custom_field' );

It will make all the loops showing properties on the front-end sorted by sale_price. If you want to sort them this way only in these categories, then you’ll have to change the condition to:

if ( ! is_admin() && $query->is_main_query() && is_tax('statuses') ) {