In a small saucepan, over medium-low heat, combine sour cream, sugar, salt, and butter. Cook, stirring frequently, until mixture is warmed and butter is melted. Remove from heat and let cool to 105 degrees F.
In the meantime, combine yeast and warm water in a small bowl. Stir until dissolved and set aside.
In large mixer bowl, add cooled (105 degrees F) sour cream mixture. Stir in yeast mixture. On low speed add lemon peel and eggs, one at a time. Add 4 cups flour and cinnamon; mix 2 minutes on low speed. Cover bowl; refrigerate dough overnight or at least 12 hours.
Remove dough from refrigerator. To prepare filling, beat cream cheese, lemon juice, sugar, egg, salt, vanilla extract, and almond extract. Beat until light and fluffy.
Divide dough into 4 portions. On lightly-floured surface, roll out each portion into a 12 x 8-inch rectangle. Cut each rectangle in half lengthwise.
Spread cream cheese mixture over rectangles, leaving 1/2 inch on edges free of mixture for ease in sealing edges. Sprinkle cranberries and crystallized ginger over each rectangle. Starting with 12-inch side, roll up (jelly-roll fashion) tightly.
Preheat oven to 375 degrees F. Twist two rolls together. Pinch ends; turn under and pinch to seal. Place two Danish on a parchment-lined baking sheet.
Immediately bake Danish 14 to 17 minutes, or until lightly browned. Remove from oven and place on wire rack. Repeat for remaining Danish.
While Danish is cooling on rack for 15 minutes, prepare glaze. In small bowl, combine confectioners' sugar, butter, lemon extract, salt, and milk; beat until smooth. Place a dollop of glaze on each warm Danish and spread with a small spatula. If desired, garnish with dried cranberries and almonds. Serve warm or at room temperature.