In a bowl, combine chicken pieces, buttermilk, salt, black pepper, garlic powder, onion powder, and paprika. Let it marinate for at least 30 minutes or overnight for best results.
In a separate bowl, mix flour, cornstarch, baking powder, and cayenne pepper.
Whisk the egg and milk in another small bowl.
Remove the chicken from the marinade, allowing excess buttermilk to drip off.
Dip each piece into the flour mixture, then into the egg mixture, and back into the flour mixture for a crispier coating.
Heat oil in a deep pan to 350°F (175°C).
Fry the chicken in batches until golden brown and crispy, about 3-4 minutes per batch.
Drain on paper towels and serve hot with your favorite dipping sauces.