Preheat the oven to 350 degrees F (175 degrees C). Grease and flour four 9-inch round cake pans.
Combine sugar, butter, shortening, and egg yolks in a large bowl; beat with an electric mixer until smooth and creamy. Mix in sifted flour, coconut, buttermilk, walnuts, baking soda, and vanilla extract.
Beat egg whites in a glass, metal, or ceramic bowl just until stiff peaks form. Fold into the cake batter. Divide batter among the prepared cake pans.
Bake in the preheated oven until a toothpick inserted into the center comes out clean, 30 to 35 minutes. Cool on a wire rack for 5 minutes. Run a table knife around the edges to loosen. Invert carefully onto a serving plate or cooling rack. Let cool, about 30 minutes.
While the cakes are cooling, combine cream cheese, butter, and vanilla extract for the icing in a large bowl; beat with an electric mixer until smooth and creamy. Gradually mix in powdered sugar until combined.
Spread icing on the top of each cake and sprinkle with coconut. Stack cakes to make four layers, inserting toothpicks or wooden skewers vertically to keep the cake together. Spread remaining icing on the top and sides and sprinkle with more coconut.