Preheat the oven to 350°F. Grease and line the bottoms of two 9-inch round cake pans with parchment paper, then whisk the cake flour, cornstarch, baking powder, baking soda, and salt together.
Beat the softened butter, vegetable oil, and granulated sugar until pale and creamy. Beat in the coconut milk, Greek yogurt, vanilla extract, and coconut extract until well combined.
Fold the dry ingredients into the wet mixture just until the batter is smooth, then gently fold in the shredded coconut. Divide the batter evenly between the prepared pans.
Bake for 27 to 32 minutes, until the centers spring back when lightly touched. Cool in the pans for 10 minutes, then turn the layers onto racks and cool completely.
Beat the softened butter for the frosting until creamy. Gradually beat in the powdered sugar, coconut milk, vanilla extract, and salt until light, fluffy, and spreadable.
Place one cooled cake layer on a serving plate and spread with a generous layer of frosting. Add the second layer, then frost the top and sides of the cake.
Press the toasted coconut gently over the top and sides. Let the finished cake stand for about 30 minutes before serving so the frosting can settle.