Pat chicken pieces dry with paper towels. Place in a large bowl or resealable bag and pour buttermilk over them. Cover and refrigerate for at least 2 hours or overnight.
In a large shallow dish or brown paper bag, whisk together all-purpose flour, salt, black pepper, paprika, garlic powder, onion powder, and cayenne pepper.
Remove chicken from buttermilk, letting excess drip off. Dredge each piece in the seasoned flour, pressing firmly to coat. Arrange coated pieces on a wire rack over a baking sheet; let rest 15–20 minutes.
Pour vegetable oil or shortening into a heavy-bottomed skillet to a depth of 1–1½ inches. Heat over medium-high until oil reaches 350°F (175°C) or sizzles on flour test.
Working in batches, fry chicken skin-side down for 6–8 minutes per side until deeply golden. Reduce heat to medium-low, cover, and cook an additional 10–15 minutes, or until the internal temperature reaches 165°F (74°C).
Transfer chicken to a wire rack set over paper towels to drain. Let rest a few minutes before serving.