To make the buttermilk brine, in a large bowl, combine the buttermilk, salt, black pepper, and cayenne pepper. Pierce the chicken pieces all over with a fork and add them to the buttermilk mixture. Refrigerate for 2 to 4 hours (and up to 24 hours).
To make the flour coating, in a large, shallow baking dish (or large resealable plastic bag), combine the flour, cornstarch, baking powder, onion powder, garlic powder, salt, and black pepper. Mix well.
Add about 3 tablespoons of the buttermilk brine to the flour mixture and rub together with your fingers to create small clumps.
Place a wire rack on a large baking sheet.
Working with one piece at a time, remove the chicken from the buttermilk brine and let any excess liquid drip back into the bowl. Transfer the chicken to the flour mixture and turn to coat all sides. Press the coating into the chicken so it adheres.
Transfer the coated chicken to the wire rack and let stand for 30 minutes.
Place another rack over a baking sheet lined with paper towels.
Heat 1 inch of the vegetable oil in a deep, heavy pan (like a Dutch oven) over medium-high heat. Heat until the oil reaches 325 degrees.
Working in batches, gently lower the chicken pieces into the hot oil. Fry until each piece registers 165 degrees when an instant-read thermometer is inserted deep into the meat, not touching the bone, about 10 to 12 minutes, depending on the size of your chicken pieces. Turn the chicken pieces occasionally during cooking, and make sure the oil doesn’t drop below 315 degrees.
Transfer the fried chicken to the wire rack over paper towels and let stand for 5 minutes. Continue working until all pieces have been fried.
Store cooled leftovers in an airtight container, in the refrigerator, for up to 3 days. Reheat in a 325-degree oven until hot and crispy, about 15 minutes.