For the cake: Preheat the oven to 350 degrees F. Grease and lightly flour three 9-inch cake pans.
Sift the flour and baking soda together and set aside.
With an electric mixer, cream the butter and shortening with the sugar until fluffy, about 5 minutes. Add the egg yolks one at a time, beating well between each addition. With the mixer on medium speed, add the flour and buttermilk alternately, beginning and ending with buttermilk. Add the vanilla, coconut and nuts, and stir well to incorporate.
In a separate bowl with clean beaters, whip the egg whites to stiff peaks. Gently fold the beaten egg whites into the batter, just until blended.
Pour the batter into the prepared pans and bake for 25 minutes. Test for doneness by touching the top of the cake with your finger. The cake is done if it bounces back up. Cool the layers on wire racks sprayed with cooking spray to prevent sticking.
For the frosting: With an electric mixer, beat the cream cheese with the butter on high speed until fluffy. Reduce the speed to medium and blend in the sugar and vanilla. Beat well until the frosting is smooth.
When the cake is completely cool, spread the frosting between the layers and on the sides and top of the cake. Sprinkle on the nuts.
Recipe adapted from Georgia Cooking in an Oklahoma Kitchen by Trisha Yearwood (c) Clarkson Potter 2008