In large mixing bowl, combine 1 cup flour, sugar, yeast and salt. In saucepan, heat water, milk, and butter to 120-130 (I did this in the microwave). Add to dry ingredients, beat until combined. Stir in enough remaining flour to form a soft dough.
Turn onto a floured surface, knead until smooth and elastic, about 5-7 minutes. Place in a greased bowl, turning once to grease top. Cover and let rise in a warm place until doubled, about 1 hour.
For filling, combine cranberries, brown sugar, and water in small saucepan. Cook over medium heat until berries pop, about 15 minutes. Remove from heat, stir in butter, walnuts, and lemon juice. Cool.
Punch dough down. Turn onto a lightly floured surface; roll into a 20-in. x 10-in. rectangle. Spread cooled filling to within 1/2 inches of edges. Roll up jelly-roll style, starting with a long side; pinch seam to seal. Place in a zigzag pattern in a greased 9-in. x 5-in. x 3-in. loaf pan.
For topping, combine flour and sugar in a small bowl; cut in 1 tablespoon butter until crumbly. Melt remaining butter; brush over dough. Sprinkle with topping. Cover and let rise until doubled, about 40 minutes. Bake at 350° for 40-45 minutes or until bread sounds hollow when tapped. Cool in pan for 10 minutes then carefully remove from pan to a wire rack to cool.