Preheat the oven to 350 degrees. Line a standard size muffin pan with cupcake liners, and a second pan with 3 liners. Set aside.
In the bowl of a stand mixer or a large mixing bowl with a hand mixer, beat the butter and coconut oil on medium-high speed until smooth, about 1 minute. Add the sugar and beat on high speed for 2-3 minutes or until pale. Add the egg whites (they do not need to be beaten separately), vanilla extract, and coconut extract, mix until combined.
In a medium mixing bowl, whisk together the cake flour, baking powder, baking soda, and salt.
With mixing speed on low, alternate adding the dry ingredients along with the sour cream, coconut milk and 1/2 cup of shredded coconut. Mix just until incorporated.
Using a #20 scoop (3.5 tablespoons) fill each cupcake liner with batter. Top with toasted coconut and gently press it into the batter.
Place in the oven and bake for 18-22 minutes, or until a cake tester inserted in the center comes out clean. Remove from the oven and allow to cool in the pans for 5 minutes before transferring to a wire rack to cool completely.
Meanwhile, to prepare the cream cheese frosting, in the bowl of a stand mixer or a large mixing bowl with a hand mixer, beat the butter along with the salt and vanilla until creamy, about 2 minute.With mixing speed on low gradually add the powdered sugar, beat until it forms a thick paste. Add the pineapple, pineapple juice and cream cheese, mix on the lowest speed possible for 1 minute, then STOP!
Pipe over the cooled cupcakes, then top with toasted coconut, crushed pineapple, maraschino cherries, umbrellas and straws, if desired.