Bring butter, egg whites, buttermilk, sour cream, cream cheese, and pineapple juice to room temperature. Butter and flour three 8-inch round cake pans. Set aside.
Drain the can of crushed pineapple. Reserve 3/4 cup juice for the cake batter and set the crushed pineapple aside for the filling.
For the frosting, beat the room temperature cream cheese and butter in a large bowl until smooth and creamy. Blend in 2 tablespoons milk and the coconut extract.
Mix in the powdered sugar 1 cup at a time, beating until smooth. If the frosting feels thick, add up to 1 more tablespoon milk. Set aside.
Toast the sweetened coconut in a dry skillet over medium heat, stirring constantly, until very light brown, about 4 to 6 minutes. Spread on a plate to cool.
Preheat the oven to 350 F, 175 C.
In a large mixing bowl, beat the butter and granulated sugar until light and fluffy, about 3 to 4 minutes. Beat in the egg whites one at a time. Mix in the coconut extract and vanilla extract.
In a separate bowl or large measuring cup, whisk together the pineapple juice, buttermilk, and sour cream until smooth.
In another bowl, whisk the cake flour, baking powder, and salt.
Add the dry ingredients to the butter mixture in three additions, alternating with the pineapple juice mixture, beginning and ending with the dry ingredients. Mix just until combined after each addition. Do not overmix.
Divide the batter evenly among the prepared pans. Bake at 350 F, 175 C for 23 to 26 minutes, until a toothpick inserted in the center comes out with a few tender crumbs.
Cool the layers in the pans for 10 minutes, then turn out onto wire racks to cool completely.
Make the filling once the layers are cool. Whip the cold heavy cream to firm peaks. In a bowl, fold together 3/4 cup of the cream cheese frosting, the drained crushed pineapple, and 3/4 cup of the toasted coconut. Gently fold in the whipped cream until just combined.
Place one cooled cake layer on a serving plate. Spread half of the whipped pineapple filling over it, stopping about 1/2 inch from the edge. Top with the second layer and repeat with the remaining filling. Place the third layer on top.
Frost the top and sides of the cake with the remaining cream cheese buttercream. Press the remaining toasted coconut onto the sides and top. Refrigerate until ready to serve.