Preheat the oven to 350°F and spray a 9x13-inch baking dish with cooking spray.
Cook the angel hair pasta in a large pot of boiling salted water according to package directions until al dente; drain and set aside.
While the pasta cooks, heat a large skillet over medium and brown the ground turkey or beef until almost cooked through, breaking it up as it cooks.
Add the chopped onion to the skillet and sauté with the meat until the onion is tender and the meat is cooked through; remove the mixture from the skillet and set aside.
In the same skillet over medium heat, melt the butter. Whisk in the flour gradually to form a paste and cook, whisking, for about 2 minutes.
Slowly whisk in the milk until the mixture thickens, then stir in the tomato sauce and the undrained diced tomatoes with green chiles and cook, stirring occasionally, until smooth and creamy.
Return the cooked meat and onions to the sauce. Stir in the cheddar cheese, about 1 cup of the pepper Jack cheese, chopped cilantro, cumin, chili powder, and salt until the cheeses melt and the sauce is combined.
In a large bowl, combine the cooked pasta with the sauce mixture and stir 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 about 5 minutes more, until the cheese is melted and bubbly.
Let the casserole rest a few minutes, then slice and serve, garnishing as desired.