Preheat the oven to 350°F. Lightly grease a 9x13-inch casserole dish. Combine the grated cheeses in a large bowl and divide out about 2 loosely filled cups. Set aside.
Fill a large pot with 4 quarts water and bring to a boil. Salt the water, then add the pasta and cook until al dente, about 7 minutes. Drain and rinse under cold water and set aside.
In a large saucepan, add the butter and melt over medium heat. Once fully melted, whisk in the flour until incorporated. Cook, whisking, for 2 minutes.
Slowly pour in the milk, whisking to break up any lumps. Pour in the cream, mustard, onion powder, garlic powder, and salt and pepper. Whisk to combine and cook until slightly thickened.
Reduce heat to low and begin adding cheese from the large bowl. Add a handful at a time, whisking to completely melt before adding more. Once all of the cheese is incorporated and melted, whisk in the sour cream until smooth.
Stir the pasta into the cheese sauce, coating well. You might need to put the pasta back into the pot you cooked it in and pour the sauce over the top, if your saucepan is not large enough.
Pour half the mac and cheese into the casserole dish. Scatter half the reserved cheese over the top, then add the remaining pasta and remaining cheese.
Bake for about 20 minutes, until cheese is bubbly around the edges. For a crisp top, broil for 3-5 minutes. Let cool 15 minutes before serving.