For the cake:
Preheat the oven to 350 degrees F. Lightly oil 2 (9-inch) cake pans. Line the bottom of each pan with parchment paper. Oil the parchment paper and then flour the pan. Set aside.
Place the flour, baking powder and salt into a large mixing bowl and whisk to combine.
Combine the coconut milk and coconut cream in small bowl and set aside.
Place the butter into the bowl of a stand mixer and using the paddle attachment, cream on medium speed until fluffy, approximately 1 minute. Decrease the speed to low and gradually add the sugar slowly over 1 to 2 minutes. Once all of the sugar has been added, stop the mixer and scrape down the sides. Turn the mixer back on to medium speed and continue creaming until the mixture noticeably lightens in texture and increases slightly in volume, approximately 2 to 3 minutes. Stir in the coconut extract.
With the mixer on low speed, add the flour mixture alternately with the milk mixture to the butter and sugar in 3 batches, ending with the milk mixture. Do not over mix.
In a separate bowl, whisk the egg whites until they form stiff peaks. Fold the egg whites into the batter, just until combined. Divide the batter evenly between the pans and bang the pans on the counter top several times to remove any air and to distribute the batter evenly in the pan. Place in the oven on the middle rack. Bake for 40 minutes or until the cake is light golden in color and reaches an internal temperature of 200 degrees F.
Cool the cake in the pans for 10 minutes then remove and transfer to a cooling rack. Once the cakes have cooled completely cut across the equator of each to form 4 layers. Place the 1/3 cup coconut water into a small spritz bottle and spray evenly onto the cut side of the 4 layers. If you do not have a spritz bottle you may brush the coconut water on with a silicone pastry brush. Allow to sit while preparing the frosting.
For the frosting:
Bring 1 quart of water to a boil in a 4-quart saucepan over high heat. Decrease the heat to medium to maintain a steady simmer. In the meantime, place the egg whites, sugar, coconut water, cream of tartar and salt into a medium size-mixing bowl. Place the bowl over the simmering water and immediately begin beating with an electric hand mixer set to low speed. Beat for 1 minute and then increase the speed to high and continue to beat for 5 minutes. Remove from the heat and beat in the coconut and vanilla extracts for 1 minute. Allow the frosting to sit for 5 minutes before using.
Place approximately 3/4 cup of the frosting on the first layer of cake, sprinkle with 1/2 cup coconut and top with the next layer. Repeat until you reach the top layer. Frost the top and sides of the cake and sprinkle with the remaining coconut. Refrigerate for at least 30 minutes before serving.
To open a coconut: Preheat the oven to 375 degrees F. Place the coconut onto a folded towel set down in a large bowl. Find the 3 eyes on 1 end of the coconut and using a nail or screwdriver and hammer or meat mallet, hammer holes into 2 of the eyes. Turn the coconut upside down over a container and drain the water from the coconut. Store the water in an airtight container in the refrigerator for up to a week. Place the coconut onto a 1/2 sheet pan and bake in the oven for 15 minutes. Remove from the oven. The coconut should have cracked in several places. Using an oyster knife or other dull blade, separate the hard shell from the brown husk. Using a serrated vegetable peeler, peel the brown husk from the coconut meat. Rinse the coconut meat under cool water and pat dry. Break the meat into 2 to 3-inch pieces. With the grater disk attached to a food processor, grate the coconut.