Preheat oven to 350 degree F. Spray three 9-inch round cake pans with flour-added cooking spray. If using dark cake pans, preheat oven to 325 degrees F.
Sift the already-sifted flour once more with the baking soda (or just whisk it really well). Stir in the salt and set that aside.
Beat egg whites in a mixing bowl until stiff; set aside.
Cream butter and shortening in a large mixing bowl; add sugar and beat for 3-5 minutes. Add vanilla, then add egg yolks, one at a time, beating well after each yolk.
Turn mixer speed to low or do this step with a mixing spoon or heavy-duty scraper. Add the flour and buttermilk alternately, starting and ending with flour. When batter is uniform, fold in the egg whites in three parts (this helps keep the batter airy). Stir in the coconut and nusts.
Divide batter among all three pans and bake for 25 minutes or until a skewer inserted in cakes comes out clean. Cakes will look kind of flat.
Prepare icing. Stir cream cheese, butter and some of the sugar together, then beat until smooth. Slowly add remaining sugar. Beat until smooth and creamy. Beat in vanilla. Add milk as needed to make icing creamy. Spread icing between cake layers and on top of cake.