Make the dough: In the bowl of a stand mixer, add the yeast, milk, sugar, salt, butter, sour cream, eggs, and 3 cups of flour. Mix on low speed until a dough is just beginning to form, 3-4 minutes. Increase the speed slightly and mix until the dough is smooth and elastic, about 4 minutes more. The dough will be soft and come off the sides of the bowl cleanly.
Turn the dough out onto a lightly floured surface; lightly knead to form a smooth ball, then return it to the bowl. Cover the bowl with a damp towel and set in a warm place until risen slightly, 50-60 minutes.
Make the filling: In a medium saucepan over medium heat, melt the butter. Stir in the orange zest, spices, and sugars. Turn off the heat and let cool slightly. Fold in the walnuts and one beaten egg. Set the filling aside to cool completely.
In a small bowl, beat the remaining egg with 1 tablespoon water. Set aside.
Preheat the oven to 350°F, and line a baking sheet with parchment paper.
Using a rolling pin on a lightly floured surface, roll one half of the dough into a ¼ inch thick rectangle, about 12-by-10 inches. Position the dough with the longer side facing you. Spread half of the filling (about 1 1⁄2 cups) over the dough in an even layer, leaving a ½-inch border on the bottom edge. Brush the bottom edge lightly with the egg wash, and roll up the bread lengthwise like a jelly roll, covering the filling. Press to seal the edge, and transfer the loaf to the prepared baking sheet. Repeat the process with the second piece of dough and the remaining filling, leaving at least 4 inches between the rolls on the baking sheet. Cover the loaves with a towel and let sit until they are risen slightly, about 35 minutes.
When ready to bake, brush the loaves with the egg wash and transfer to the oven. Bake until evenly golden brown, 35-40 minutes.
Remove and transfer to a rack to cool completely. Rolls can be sliced and eaten once cooled, but are better the next day. Use a serrated knife to cut the rolls into 1-inch-thick slices.