Make the cake: Preheat the oven to 325 degrees F. Butter two 8-inch-round cake pans and dust with cocoa powder, tapping out the excess. Combine the butter, milk and 1/2 cup water in a saucepan and bring to a simmer. Transfer to a large bowl, add the cocoa powder and granulated sugar and whisk until smooth. Let cool slightly, about 5 minutes.
Whisk the flour, baking powder, baking soda and salt in a medium bowl; set aside. Whisk the eggs and vanilla into the cocoa mixture, then stir in the flour mixture in two additions until just combined (it's OK if there are a few small lumps). Divide the batter between the prepared pans; tap the pans against the counter to remove any air bubbles. Bake until a toothpick inserted into the centers comes out with a few moist crumbs, about 35 minutes. Let cool 10 minutes in the pans, then run a knife around the edges and invert onto a rack to cool completely.
Make the frosting: Put the white chocolate in a microwave-safe bowl and microwave in 30-second intervals, stirring, until smooth; let cool. Beat the butter and salt in a large bowl with a mixer on medium speed until fluffy, about 3 minutes. Beat in the melted white chocolate until combined. Gradually beat in the confectioners' sugar until smooth and fluffy; beat in the vanilla. (If the frosting is too soft to spread, chill about 15 minutes.)
Place one cake layer on a platter and spread with one-third of the frosting. Top with the second cake layer; cover the whole cake with the remaining frosting. Top with shaved white and dark chocolate.