Preheat oven to 350 F. Lightly butter a 9x13-inch casserole dish; set aside.
Shred the blocks of cheese and mix in a large bowl; set aside.
Bring a large pot of water to a boil and salt generously. Boil the pasta according to the package directions, just until al dente. Drain and set aside.
In a small bowl, mix together the garlic powder, paprika, salt, and pepper; set aside.
Melt the butter in a large skillet over medium heat. Add half the seasoning mixture; stir well and cook for 30 seconds.
Add the flour and whisk into the butter mixture to make a roux. Cook for 1-2 minutes, stirring often.
Whisk the evaporated milk into the roux a little at a time, then very slowly whisk in the heavy cream while whisking constantly until fully incorporated. Add the remaining seasoning and Dijon mustard; cook until thickened while whisking often.
Add half the shredded cheese to the skillet one handful at a time, whisking well between each addition. Make sure the cheese is fully melted into the sauce before adding another handful of cheese.
In a large bowl, combine the cooked pasta and the cheese sauce. Pour half of the mixture into the prepared casserole dish and top with half of the reserved shredded cheese.
Spread the rest of the pasta mixture over the cheese layer in the casserole dish, then top with the remaining shredded cheese.
Bake at 350F for 25-30 minutes until bubbly.
Turn the oven to broil and cook the macaroni and cheese for an additional 2 minutes until the top is golden brown.