Preheat the oven to 400°F (200°C). Pierce the sweet potatoes several times with a fork, place them on a baking sheet, and bake for about 50–60 minutes (or until soft when pierced).
Once cool enough to handle, slice each potato in half and scoop out the flesh into a large bowl.
Add melted butter, sugar, eggs, vanilla, cinnamon, salt, and half-and-half to the sweet potato flesh. Whip or mash until smooth and creamy.
Spread the sweet potato mixture evenly in a 9×13-inch baking dish (or similar size).
In a separate small bowl, mix together softened butter, brown sugar, and flour until coarse crumbs form. Sprinkle the streusel all over the top of the sweet potatoes.
Reduce the oven temperature to 350°F (175°C). Bake the casserole for 20–25 minutes (or until heated through and topping is set). If the topping browns too quickly, you can cover loosely with foil halfway through.
Let it cool slightly before serving.