In a large bowl or stand mixer, mix 2 cups of the flour with the sugar, yeast, and salt.
Warm the milk and butter until the butter is mostly melted and the mixture feels just warm, not hot. Stir in the vanilla, then add it to the dry ingredients along with the egg.
Beat the mixture until combined, then add the remaining flour gradually until a soft dough forms. Knead for about 8 to 10 minutes until smooth and elastic.
Place the dough in a lightly oiled bowl, cover it, and let it rise until doubled, about 1 hour.
In a separate bowl, mix the softened butter, brown sugar, cinnamon, salt, and cream into a spreadable paste.
Roll the dough into a large rectangle on a floured surface, then spread the filling evenly over the top.
Starting from the long edge, roll the dough into a tight log and pinch the seam closed. Slice into 12 even rolls and place them in a parchment-lined 9 x 13-inch pan.
Cover the pan and let the rolls rise again until puffy, about 45 to 60 minutes.
Bake at 350°F until golden brown, about 25 to 30 minutes. Let them cool slightly before frosting.
For the frosting, beat the cream cheese and butter until smooth, then mix in the powdered sugar, milk, vanilla, and salt until fluffy.
Spread the frosting over the warm rolls and serve right away.