Heat oven to 350°F. Grease and line two 9-inch round pans.
Whisk flour, baking powder, baking soda, and salt in a bowl.
Cream softened butter and granulated sugar until very fluffy and pale.
Beat in eggs one at a time, then mix in vanilla and sour cream.
Blend in oil. Alternate dry mix with milk, starting and ending with dry.
Divide batter between pans and smooth the tops.
Bake until golden and a tester is clean, 26 to 30 minutes.
Cool 10 minutes in pans. Turn out and cool completely.
Start icing: Combine both sugars, evaporated milk, and butter in a heavy pot.
Bring to a gentle boil over medium heat, whisking to dissolve crystals.
Cook to 235–238°F, stirring often, about 12 to 15 minutes.
Remove from heat. Stir in vanilla and salt, then cool 10 minutes.
Beat icing until thick, glossy, and spreadable, 2 to 4 minutes.
Set one cake layer on a stand. Spread a generous layer of icing.
Top with second layer. Frost top and sides. Let set 20 minutes.