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 following package directions until al dente; drain and set aside.
While the pasta cooks, heat a large skillet over medium heat and brown the ground turkey or beef, breaking it up as it cooks.
Add the finely chopped onion to the skillet when the meat is nearly cooked; sauté until the onion is tender and the meat is fully cooked, then remove the meat mixture 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 2 minutes.
Slowly whisk in the milk until the mixture thickens and is smooth.
Stir in the tomato sauce (both cans) and the diced tomatoes with green chiles, and simmer, stirring occasionally, until the sauce is thick and creamy.
Return the cooked meat mixture to the sauce, then add the grated cheddar cheese, 1 cup of the grated pepper jack cheese, chopped cilantro, ground cumin, chili powder, and salt; stir until cheese melts and the mixture is combined.
Toss the cooked pasta with the sauce in a large bowl until the pasta is evenly coated, then transfer to the prepared baking dish and cover with foil.
Bake covered for 30 minutes. Remove foil, top with the remaining pepper jack cheese, and bake uncovered until the cheese is melted and bubbly, about 5 more minutes.
Let the casserole rest for a few minutes, then slice and serve.