How to Make It
Prepare the Layers: Preheat oven to 350°F. Grease and flour 2 (9-inch) round cake pans with shortening and all-purpose flour, and line bottoms with parchment paper; lightly grease parchment paper. Set aside.
Beat butter and coconut oil with a heavy-duty stand mixer fitted with a paddle attachment on medium speed until creamy. Gradually add sugars, and beat until light and fluffy, 3 to 5 minutes. Add egg yolks, 1 at a time, beating just until incorporated after each addition. Beat in extracts.
Whisk together flour, baking powder, and salt in a medium bowl; add to butter mixture alternately with coconut milk, beginning and ending with flour mixture, beating just until combined after each addition.
Beat egg whites in a medium bowl with an electric mixer on high speed until stiff peaks form (do not over beat). Gently fold egg whites into batter. Spread batter evenly in prepared pans.
Bake in preheated oven until a wooden pick inserted in center of 1 layer comes out clean, 22 to 25 minutes. Let cool in pans on wire racks 15 minutes. Gently (the layers are very tender) remove from pans, and cool completely on wire racks, about 1 hour.
Prepare the Filling: Beat heavy cream, coconut cream, and vanilla with an electric mixer on low speed until foamy. Increase speed to medium-high; gradually add powdered sugar, and beat until stiff peaks form. Gently fold in coconut.
Prepare the Frosting: Beat butter and salt with a heavy-duty stand mixer on medium speed until creamy; gradually add powdered sugar, and beat until smooth, about 1 minutes. Add vanilla and 4 tablespoons of the coconut milk, and beat until light and fluffy, about 1 minute, adding 1 to 2 tablespoons more milk, if needed, 1 teaspoon at a time, for desired consistency.
Assemble the cake: Place 1 layer on a serving platter, and spread Filling over layer, spreading to within 1/2-inch from edge. Top with second layer, and spread Frosting on top and sides of cake. Garnish with toasted coconut.