Preheat oven to 450°. Pour 2 tablespoons oil in a 10-inch cast-iron skillet. Place skillet in oven until very hot, about 8 minutes.
In a large bowl, whisk together cornmeal, flour, baking powder, and 1 teaspoon salt. In a medium bowl, stir together buttermilk, ¼ cup onion, ¼ cup celery, ¼ cup bell pepper, 2 eggs, and 2 tablespoons oil. Make a well in center of dry ingredients; add buttermilk mixture, stirring just until combined. Carefully pour batter into hot skillet.
Bake until a wooden pick inserted in center comes out clean, about 15 minutes. Let cool in pan for 5 minutes. Remove from pan, and let cool completely on a wire rack. Cut cornbread into cubes, or coarsely crumble; set aside.
Add remaining 1 tablespoon oil to skillet; heat over medium-high heat. Add ham, remaining ½ cup onion, remaining ½ cup celery, and remaining ½ cup bell pepper; cook until lightly browned, 3 to 4 minutes. Remove from skillet.
In a large bowl, combine cornbread, ham mixture, thyme, sage, pepper, and remaining ½ teaspoon salt. Add broth and remaining 2 eggs, stirring until combined.
Spray a 2½- to 3-quart baking dish with cooking spray. Spoon cornbread mixture into prepared pan. Drizzle with melted butter. Cover with foil, and refrigerate for 2 hours.
Preheat oven to 350°. Bake for 25 minutes. Uncover and bake until heated through and lightly browned, about 20 minutes more. Let stand for 15 minutes before serving. Garnish with sage, if desired.
Recipe by Taste of the South at https://tasteofthesouthmagazine.com/buttermilk-cornbread-dressing/