In a large saucepot, cover sweet potatoes with cold water. Bring to a boil over medium-high heat and boil until sweet potatoes are tender and easily pierced with a knife, about 30 minutes. Using tongs, remove potatoes from water and set aside to cool. When potatoes are cool enough to handle, peel and mash them in a large bowl.
Cut 1 stick of butter into equal pieces and place in bowl with warm mashed sweet potatoes. Add sugar, salt and vanilla extract and mix together well. Whisk in eggs and stir until mixture is well-combined and smooth. Stir in milk, 1 Tbsp. at a time, just until mixture is moist and no longer stiff (you may not use all of milk).
Preheat oven to 350°F and mist a 7-by-11-inch baking dish with nonstick cooking spray. Pour sweet potato mixture into baking dish and spread evenly. Melt second stick of butter. In a bowl, mix together nuts, flour and brown sugar. Sprinkle brown sugar mixture completely over potatoes and drizzle top all over with melted butter.
Bake until topping is browned and crispy and sweet potato mixture is cooked through, 35 to 40 minutes. Serve hot.