Query Posts by taxonomy/Taxonomy Child Custom order

Just answering bit by bit here and will add any optimisations I see as I go:

1) $termsreg = get_terms("region",array('orderby' => 'slug', 'order' => 'ASC')); can be run above the foreach loop. There is no need to run this however many times.

2) Are “all” your hotels that you have in your custom post type get listed somewhere in this page? If during this double loop all your hotels are at least shown once then it would be better to get all you hotels loaded first into an array along with the tax’s they belong to. then in the foreach check against the data you already received and then then show the hotel rather than grabbing it from the DB each time. What I’d do to get the hotel data in the first place would be to a custom SQL query to make sure I only pulled the data I needed and to pull both associated tax’s.

Thats all I come up with for now.