Warm 1 cup buttermilk to no more than 90°F (use low heat on the stove or microwave in short bursts), then transfer it to the bowl of a stand mixer.
Sprinkle 1 pack instant (rapid rise) yeast over the warmed buttermilk, whisk briefly, and let sit 5–10 minutes to hydrate. (Instant yeast may not produce a strong froth; if it does, fine—if not, proceed.)
Add 2 large room-temperature eggs, 1/3 cup white sugar, and 1/2 cup salted butter (very soft or somewhat melted) to the mixer. Fit the paddle attachment and beat on medium until the mixture is smooth and combined. Small butter clumps are okay.
Add 4 cups all-purpose flour and 1/2 teaspoon salt to the bowl and beat until incorporated. Replace the paddle with the dough hook.
Knead on low speed with the dough hook for about 5–7 minutes. If the dough is very sticky and clings to the bowl, add more flour 1–2 tablespoons at a time. The finished dough should form a smooth, tacky but not sticky ball; add flour only as needed.
Transfer the dough to a large bowl lightly coated with oil, turn once to coat, cover with a towel or plastic wrap, and let rise in a warm place until doubled in size (about 1 hour; you can use the warmed-oven trick — heat to 350°F for 2–3 minutes, turn oven off, then place dough inside to rise).
While the dough rises, make the filling: combine 1/2 cup very softened salted butter, 1 1/4 cups brown sugar, and 2 tablespoons cinnamon until evenly mixed.
When the dough has doubled, punch it down gently and turn it out onto a lightly floured surface. Press or shape the dough into a rough rectangle, then roll with a rolling pin to about 24 inches long by 16 inches wide (exact dimensions not critical).
Use a rubber spatula to spread the filling evenly over the dough, leaving a 1/2-inch border along one long edge.
Starting from the 24-inch side, roll the dough into a tight log (avoid rolling so tight that the centers will be compressed). Trim the ends if desired.
Cut the log into rolls about 1 3/4 inches thick if you trimmed the ends, or about 2 inches thick if you did not. Use unflavored dental floss or a sharp knife for clean cuts.
Place the cut rolls in a greased 9×13-inch baking pan, leaving a little space between them. Cover and proof in a warm place until the rolls are puffy and nearly doubled (about 30–60 minutes). If making an overnight version, cover and refrigerate the pan at this point.
Preheat the oven to 350°F. While the oven preheats, brush the tops and sides of the rolls with 1/4 cup heavy cream (or whole milk).
Bake the rolls at 350°F for about 20–25 minutes, checking at 20 minutes. They are done when the tops are golden brown and the center roll reads about 190–200°F, or when the center is no longer wet and doughy.
While the rolls bake or after they come out, make the cream cheese icing: beat 5 tablespoons softened salted butter and 4 ounces cream cheese until smooth. Add 1 teaspoon vanilla extract and combine, then slowly beat in 1 1/2 to 2 cups powdered sugar until you reach your desired consistency.
Let the baked rolls cool in the pan for 5–10 minutes. Spoon equal amounts of the cream cheese icing over each roll; allow the icing to sit a minute to soften, then spread to the edges with an offset spatula or knife.
Serve warm. Store leftovers sealed at room temperature for 1–2 days or refrigerated for up to 5 days.