Preheat oven to 350°F (175°C) and lightly grease a 9x13 inch baking dish.
Cook the elbow macaroni in a large pot of salted boiling water until 1 minute shy of al dente. Drain and set aside.
In a large saucepan or Dutch oven, melt 0.25 cup of butter over medium heat. Whisk in the flour and cook for 1-2 minutes until bubbly and golden.
Gradually whisk in the whole milk and heavy cream until smooth. Continue to cook and whisk until the mixture thickens slightly, about 3-5 minutes.
Remove the saucepan from the heat. Stir in the salt, black pepper, garlic powder, and smoked paprika.
Gradually add 3 cups of the sharp cheddar cheese and 1.5 cups of the gruyere cheese, stirring until completely melted and the sauce is smooth.
Add the cooked macaroni to the cheese sauce and stir until the pasta is evenly coated.
Pour half of the macaroni mixture into the prepared baking dish. Sprinkle with half of the remaining cheese. Top with the rest of the macaroni mixture and the remaining cheese.
In a small bowl, combine the panko breadcrumbs and 2 tablespoons of melted butter. Sprinkle the mixture evenly over the top of the macaroni and cheese.
Bake for 25-30 minutes, or until the cheese is bubbly and the topping is golden brown. Let cool for 5 minutes before serving.
Notes
For an extra crispy top, broil for the last 2-3 minutes of baking. Keep a close eye on it to prevent burning.