Preheat the oven to 350F. Line two, 8-inch cake pans with parchment paper and spray with non-stick spray.
Place the eggs into mixer bowl and whisk on high speed for several minutes until eggs have doubled in volume. Add vanilla, sugar and sour cream and whisk until well combined. Mix together flour and baking powder and add into cake batter.
Divide the batter evenly between 2 bowls. Into one bowl, add the melted chocolate and diced hazelnuts. Into the second bowl, add dried cranberries and poppy seeds. Pour batter into prepared pans and bake in preheated oven until tops are completely set, about 40 minutes.
Remove the cakes from oven and turn upside down onto a cooling rack and let cool completely. Split each layer into 2 layers.
To prepare the frosting: place the butter and cream cheese into a mixer bowl and whisk until smooth and well combined. Add caramel and whisk until well incorporated. If you want to add chocolate frosting on top, add a few tablespoons of cocoa powder to 1 cup of prepared frosting and transfer into pastry bag.
If desired, prepare apricot glaze to soak cake layers with. Simply place preserves and water into a dispenser bottle or small bowl and mix together.
To assemble cake, lightly soak each cake layer if desired with apricot glaze, then top with prepared frosting, alternating the two different cake layers. Frosting the outside of the cake and garnish with chopped nuts, chocolate frosting and if desired, chocolate ganache. Refrigerate for a few hours before serving.
For chocolate ganache, combine 1/4 cup chocolate chips with hot heavy cream. Whisk until smooth and pour of the top of cake. Use a spoon or spatula to gently spread to edges.