Preheat the oven to 350°F. Generously grease a 2-quart casserole dish with butter.
In a medium-size heavy saucepan, heat the milk and buttermilk until it’s steaming (but not boiling, but just starting to boil).
Gradually pour the cornmeal into the mixture, whisking or stirring with a large spoon while you pour. (Scrape sides of saucepan as you whisk to prevent lumps from forming:)
Reduce the heat to medium-low. Cook, stirring often, until cornmeal has dissolved and the mixture gets thick, for about 10 to 12 minutes.
Remove the pan from the heat. To the cornmeal, add the butter, finely chopped rosemary, salt, onion salt, and pepper. Stir until the butter melts and the mixture is combined. Let stand for 10 minutes.
In a medium bowl, add the egg yolks. Add 2 cups of the cornmeal mixture to the egg yolks and stir until combined. Transfer cornmeal-egg yolk mixture to remaining cornmeal mixture in saucepan on the stove, stirring quickly until combined. (NOTE: The mixture will be a little grainy or lumpy.)
Next, beat the egg whites in a medium bowl with an electric mixer until stiff peaks form, about 1 ½ minutes. Gently fold egg whites into cornmeal mixture on the stove, using a spatula or large spoon, and stir until the mixture becomes completely smooth.
Spoon the batter into the prepared casserole dish, scraping the sides.
Bake until the recipe is puffed up, firm, and lightly browned, 35 to 40 minutes. It’s normal for the spoon bread to puff up at first, and then deflate. Remove from the oven and serve either right away, or you can serve it warm.