reducing the amount of wp_query calls

Rather than querying for a single item and then querying again for 6 more excluding the first, you can just do a single query for 7 items and selectively output markup by checking which post you’re currently outputting in the loop via $your_query_object->current_post. You can also combine that with $your_query_object->rewind_posts() to run through the same loop multiple times within a template.

Beyond that, you can store your menu in a transient so you’re not doing all those queries on every request. I always recommend people use a caching plugin as well, like W3TC or similar.