Adjust oven rack to center position and preheat oven to 375°F. Line cupcake pans with 20 cupcake liners.
In a large pot, melt butter. Add water and bring to a boil. Remove pot from heat and briskly stir in flour, sugar, and sour cream. Batter should now be cool enough to gradually stir in the eggs without them scrambling. Mix in vanilla, baking soda, and salt until all ingredients are well blended.
Scoop batter into cupcake liners. Bake for 15 to 18 minutes or until toothpick inserted into center of cupcake comes out clean. Cool cupcakes in pan for a few minutes before turning out onto a rack and allowing to cool completely before frosting.
For the frosting:
Using an electric mixer, beat together butter and cream cheese. Slowly blend in powdered sugar and vanilla, then beat until smooth and well-combined.
Notes
Start checking your cupcakes for doneness at the 15 minute mark. You don't want to overbake them or they'll start to become dry, but you do want the toothpick tester to come out clean.
Make sure that your butter and cream cheese are completely at room temperature before making your frosting or it will have little lumps. You shouldn't need to sift your powdered sugar. I never do and my frosting always turns out smooth, but if your powdered sugar is especially clumpy, it might not hurt to sift it first.
These cupcakes are so moist that you can get away with baking them early, if necessary. When I make them for a birthday party, I usually bake them two days ahead of time and pop them in the refrigerator in an airtight container. The day before the party, I frost them and put them back in the fridge. Then I set them out on party day and they have time to come to room temperature before everyone eats them. But don't get me wrong...they taste great cold, straight out of the fridge, too!