Make the cake: Heat oven to 350°. Butter and flour three 9″ cake pans, and set aside. Whisk together flour, baking powder, and salt in a bowl; set aside. Whisk together milk and vanilla in a bowl; set aside. In the bowl of a stand mixer fitted with a paddle, cream butter and sugar on medium-high speed until pale and fluffy, about 3 minutes. Add eggs, one at a time, beating well after each addition. On low speed, alternately add dry ingredients in 3 batches and wet ingredients in 2 batches. Increase speed to high and beat until batter is smooth, about 5 seconds. Divide batter among prepared pans, and smooth top with a rubber spatula; drop pans lightly on a counter to expel any large air bubbles. Bake cakes until a toothpick inserted in the middle comes out clean, about 25 minutes. Let cakes cool for 20 minutes in pans; invert onto wire racks, and let cool.
Make the icing and assemble the cake: Whisk together 3 cups sugar, butter, milk, and egg in a 6-qt. copper saucepan or Dutch oven; set aside. Heat remaining sugar in a small skillet over high heat, and cook, swirling pan, until sugar melts into an amber caramel, about 2 minutes. Immediately pour caramel into milk mixture, and bring to a boil over medium-high heat; attach a candy thermometer to side of pan, and cook, stirring bottom constantly with a wooden spoon, until thermometer reads 232°, about 40 minutes. Remove from heat and immediately stir in vanilla and baking soda; let sit for 1 minute. Using a hand mixer, beat caramel mixture on medium-low speed until the consistency of loose pudding, about 1 minute. Immediately place one cake on a cake stand and pour over 1⁄2 cup caramel icing; top with second cake and pour over 1⁄2 cup icing. Top with third cake and pour remaining icing around the top edge of cake and then over the center. Quickly spread icing over sides of cake; let icing cool completely before serving. Store at room temperature.