Preheat oven to 350. Line standard muffin tins with paper liners.
Sift the first 6 ingredients together in a large bowl.
Add eggs, warm water, buttermilk, oil and vanilla; mix until smooth.
Divide batter among muffin cups, filling each 2/3 full. Bake until tops spring back when touched, about 20 minutes.
Transfer cupcakes to wire racks and let cool. Will keep, covered for up to 3 days.
To make the frosting: Beat butter with a mixer on medium-high speed until pale and creamy, about 2 minutes. Reduce speed to medium, add sugar 1/2 c at a time, beating after each addition about 5 minutes. (After every 2 additions, increase speed to high, and beat for 10 seconds, then reduce speed to medium-high). Add vanilla and beat until buttercream is smooth. Use immediately or cover and refrigerate for up to 3 days. (Bring to room temp and beat on low speed until smooth before using).