Place an oven rack in the bottom third of the oven and another in the top third of the oven. Preheat the oven to 350°F. Butter three 9-inch cake pans, then line each with a parchment paper round. Butter the paper and dust the pans with flour; knock out the excess.
Using an electric mixer fitted with the paddle attachment, cream the butter and sugar on medium-high speed until light and fluffy, about 3 minutes. Use a rubber spatula to scrape down the sides of the bowl. In a medium bowl, stir together the flour, baking powder, and salt to blend. In a small bowl, stir together the milk, coconut milk, and coconut cream until smooth. Add the flour mixture in 3 increments, alternating with the milk mixture in 2 increments, starting and ending with the flour mixture. After each addition, mix at low speed just to combine the ingredients. Stir in the vanilla.
Using an electric mixer fitted with the whisk attachment, beat the egg whites on high speed until stiff peaks form. Gently fold the egg whites into the batter until evenly blended. Divide the cake batter evenly among the prepared cake pans. Set two layers on the top rack and the third on the lower rack. Stagger the cake layers on the oven racks so that no layer is directly over another. Bake for 35 minutes, or until a toothpick inserted in the middle of the cakes comes out clean. Monitor the layers carefully for doneness; each one may be done at a different time. Remove from the oven and let cool in the pans for 10 minutes, then unmold onto wire racks to cool completely.
To make the whipped cream filling: Using an electric mixer fitted with the whisk attachment, beat the cream on high speed until soft peaks form. Beat in the coconut cream and the fresh coconut, if using.
To make the frosting: Whisk the egg whites, sugar, water, cream of tartar, and salt in a large stainless-steel bowl until thoroughly combined. Place the bowl over a saucepan filled with 2 inches of barely simmering water. Using a hand beater or handheld electric mixer, continue beating the egg white mixture for 4 minutes. Add the mini marshmallows in 2 increments while continuing to beat. Wait until the first batch of marshmallows has melted before adding the second. Continue beating for 2 to 3 minutes more, until stiff peaks form. Remove from the heat, stir in the vanilla, and continue beating until the frosting is thick enough to spread.
To assemble the cake: Stack one cake layer on a serving plate and spread the top with half of the whipped cream filling. Repeat with a second layer. Stack the final cake layer on top of the first two and cover the cake’s top and sides with the frosting. Sprinkle the coconut on the top and sides of the cake.
Cover the cake loosely with plastic wrap and store for 1 day at room temperature or up to 3 days in the refrigerator. Bring to room temperature before serving.
It’s challenging to press coconut into the sides of the cake. When pressing the coconut in, the icing invariably sticks to my fingers and mars the frosting’s finish. I’ve discovered that throwing small handfuls of coconut toward the side of the cake makes it adhere quite well—a messy but effective technique for creating a gorgeous-looking cake.
For those who want to follow Aunt Molly’s original recipe, here are her directions for extracting coconut meat and liquid from a fresh coconut: “First buy a fresh coconut. To select the best one, shake it to listen for a lot of milk inside. Prepare the coconut by first making a hole or two in one end with a hammer and ice pick. Stand the coconut up over a small bowl or glass measuring cup to catch the milk as it drains out. Next, crack the hard outer shell with a hammer, then pry off the pieces. The inner white coconut meat can then be grated [with a handheld microplane grater]. Refrigerate both the milk and grated coconut until ready to use.”