Preheat the oven to 350°F (175°C) and spray a 9x13-inch casserole dish with cooking spray.
Cook the angel hair pasta in a large pot of salted boiling water according to package directions until al dente, drain, and set aside.
While the pasta cooks, brown the ground turkey or beef in a large skillet over medium heat. When the meat is nearly done, add the chopped onion and sauté until the onion is tender and the meat is cooked through; remove and set aside.
In the same skillet, melt the butter over medium heat. Gradually whisk in the flour and cook for about 2 minutes, whisking frequently to form a roux.
Slowly whisk in the milk and cook, stirring, until the mixture thickens into a creamy sauce.
Add the tomato sauce and the can of diced tomatoes with green chiles (including the liquid), and continue cooking, stirring occasionally, until the sauce is thick and creamy.
Stir the cooked meat and onions into the sauce, then add the cheddar cheese, about 1 cup of the pepper Jack cheese, cilantro, cumin, chili powder, and salt; mix until the cheeses begin to melt and everything is combined.
In a large bowl, combine the cooked pasta and the sauce mixture, stirring until the pasta is evenly coated.
Pour the pasta mixture into the prepared baking dish, cover with foil, and bake for 30 minutes.
Remove the foil, top with the remaining pepper Jack cheese, and bake uncovered for an additional 5 minutes or until the cheese is melted and bubbly.
Let the casserole rest a few minutes before slicing and serving; garnish as desired.