1. Place a rack in the center of the oven, and preheat the oven to 350 degrees. Place the butter, olive oil, or bacon drippings in the skillet and place over medium heat. Add the onions and stir and cook over low medium heat until the onions soften and get a little brown and crispy around the edges, about 5 to 6 minutes. Stir in the ham. Set the pan aside.
2. Place the milk and salt in a large, heavy saucepan. Bring to a boil over medium-high heat, and when boiling, slowly stir in the cornmeal, stirring to keep the mixture smooth. Reduce the heat to low, and keep simmering and stirring the cornmeal until the mixture is very thick, about 5 minutes.
3. Remove the pan from the heat. Stir in the butter until the butter melts. Fold in the cheese, corn relish and the cayenne pepper. Separate the eggs, placing the yolks in a small dish and the whites in a large stainless steel or glass bowl. Add the pinch of salt to the whites and set aside. Blend a spoonful of the cornmeal mixture into the egg yolks and stir to temper (bring up their temperature) them. Add the egg yolks back to the pan of cornmeal, and stir until smooth. Set aside.
4. Beat the egg whites on high speed with an electric mixer until stiff but not dry, about 2 to 3 minutes. Fold the beaten whites into the cornmeal mixture until nearly smooth. Turn this into the prepared skillet with onions and ham, and smooth the top. Place the skillet in the oven.
5. Bake until the spoonbread has puffed up and is golden brown, 35 to 40 minutes. With a sieve, dust the top with confectioners’ sugar. Serve at once.