Preheat oven to 350°F. Line bottoms of two 8-inch cake pans with parchment paper, then grease and dust with flour.
Add flour, cornstarch, baking powder, baking soda and salt in a bowl and whisk to combine.
Combine eggs, milk, sugar, extracts and melted butter in the bowl of a stand mixer fitted with the paddle attachment and mix on slow speed until mixed thoroughly. Stop mixer and add half the flour mixture, mixing on low until just incorporated, then add the remaining flour and mix until just incorporated.
Using a rubber spatula, fold in coconut and divide batter evenly between prepared pans. Bake for 35–45 minutes, or until a toothpick comes out clean and cakes are golden brown. Allow to cool completely before frosting.
To make the frosting, add cream cheese, butter, salt and extracts to the bowl of a stand mixer fitted with the paddle attachment. Mix on medium high speed until everything is combined.
Scrape down the sides and bottom of the bowl, then slowly add powdered sugar 1 cup at a time. Scrape the sides and bottom of the bowl again, then mix on high speed for 2–3 minutes, until frosting is light and fluffy.
Transfer to a separate container, reserving 1 ½ cups of frosting in the stand mixer. Add ½ cup coconut to the mixer and combine to make the cake filling.
To assemble, level cakes and evenly spread filling over one layer, topping with the other. Spread remaining frosting around the outside and top of the cake, then coat with remaining coconut.