It's not the number of inner joins. I've done queries with a lot more than that before. My record for a generated search script was 50... Not a very pleasant database that one.
The biggest issue that I can see is that the inner joins are very inneficient as you're basically selecting every meta record for each join, meaning that you'll be getting 1,000's of irrelevant results that get thrown away in the WHERE
clause.
As an example... Instead of using this:
...
INNER JOIN wp_s3mv0r_postmeta AS mt1
ON ( wp_s3mv0r_posts.ID = mt1.post_id )
...
AND ( mt1.meta_key = 'acf_house_minlotwidth' AND CAST(mt1.meta_value AS SIGNED) BETWEEN '16' AND '16' )
You could use this:
INNER JOIN wp_s3mv0r_postmeta AS mt1
ON ( wp_s3mv0r_posts.ID = mt1.post_id )
AND ( mt1.meta_key = 'acf_house_minlotwidth'
AND CAST(mt1.meta_value AS SIGNED) BETWEEN '16' AND '16' )
That will return only the records that are needed for that join rather than returning everything and filtering out the ones that aren't needed.