In a shallow bowl, stir together the flour, cornflour, onion powder, garlic granules, salt, black pepper and cayenne pepper until thoroughly mixed. Remove 5 tablespoons of the flour mixture and set aside. Gently press the steaks into the remaining flour mixture in the bowl until well coated on both sides.
Heat butter and olive oil in a large frying pan over medium heat until the foam subsides on the butter. Gently pan-fry the steaks until the coating is browned, about 4 minutes per side. Turn only once. Remove the steaks to a plate.
Spread the onions out into the frying pan with the remaining oil and butter; cook over medium heat until the onions are translucent, 5 to 7 minutes, stirring often.
Sprinkle the reserved flour mixture over the onions; cook and stir for 1 more minute, then pour in the beef stock and milk. Bring the mixture to the boil, stirring constantly until the gravy is thickened.
Scrape the pan well to dissolve any flavour bits left on the bottom. Return the browned steaks to the gravy mixture, then push them down into the gravy. Cover the frying pan, reduce heat to low and simmer until the steaks are very tender, about 45 minutes, stirring occasionally.