Preheat the oven to 350°F and grease and line the bottoms of two 7 or 8-inch round baking pans with parchment paper.
To a small bowl, add ground flax and 3 tbsp water. Stir to combine, then set aside for 5-10 min, to thicken.
If adding walnuts, place the walnuts on a small rimmed baking sheet and bake until golden brown, about 6-8 minutes. If you'd like to use some for topping the cake, when the walnuts are cool, finely chop half and roughly chop the remaining half; keep separate.
In a medium bowl, whisk together the flour(s), baking powder, baking soda, cinnamon, nutmeg, ginger and salt.
In a large bowl, whisk together the applesauce, milk, vanilla, sugar, oil and flax mixture until combined. Stir in carrots. Note that if you're using melted coconut oil, to make sure the other ingredients are at room temperature. If they're cold, they will cause the coconut oil to solidify.
Add the dry ingredients into the bowl with the wet ingredients. Stir until just combined, you don't want to over mix. Fold in half of the finely chopped walnuts, if using.
Divide batter between prepared baking pans, smoothing the tops into an even layer. Bake for 30-35 minutes or until a toothpick inserted comes out clean.
Let the cake cool completely in the baking pans.
To make cashew frosting, combine all frosting ingredients into a high speed blender. Blend until very smooth, about 1 to 2 minutes, scraping down the sides if needed. Chill frosting for at least 30 minutes before spreading. It will firm up a bit.
To make vegan cream cheese frosting, beat all the ingredients together until smooth and creamy.
Remove cooled cakes from baking pans. Transfer one cake to a serving plate. Spread half the frosting over top, then top with the other cake. Spread remaining frosting over the top half, leaving the sides exposed.
Sprinkle remaining walnuts, or toasted coconut flakes around the outer edge or decorate to your preference.