Pour milk into a small pot. Add butter and melt over medium heat. Watch closely to ensure milk doesn’t boil over. Set aside and let the mixture cool a little, It should still be warm to the touch.
In a stand mixer fitted with the paddle attachment, combine milk mixture, sugar, yeast, and egg and yolks. With mixer on low, add 2 cups flour then salt.
Switch to the dough hook and add 1 cup flour with mixer on low. Slowly add up to 1/4 cup more flour if necessary, 1 tablespoon at a time, until the dough is smooth and just pulls away from the sides of the bowl. The dough should still be a little wet and you may not need the entire 1/4 cup flour. Continue to let the mixer run and knead the dough for about 10 minutes.
Turn the dough out onto a lightly floured surface and form it into a ball. Transfer it to a large, lightly buttered bowl, and cover with plastic. Leave it in a warm, draft-free spot until it has doubled in size, This takes about 11/2 to 2 hours.
When the dough is almost done rising, make the filling. Combine the finely chopped pistachios in a bowl with the butter, orange zest, cinnamon, sugar, and salt.
Turn the dough onto a very lightly floured surface. Roll it into a 16-by-12-inch rectangle. Spread butter mixture evenly over the surface then tightly roll the dough starting at the bottom, long side and pinch the seam closed. Butter a 9-by-13-inch baking dish. Cut roll crosswise into 9 equal pieces. Transfer to prepared dish, cut side down, cover with plastic, and let the dough rise another 2 hours, until it has almost doubled in size again.
Preheat oven to 350°F. Uncover buns and bake until golden brown, 20 to 25 minutes.
Make the frosting while the rolls are baking. Whisk together softened cream cheese, powdered sugar, vanilla, orange juice, and orange zest. Drizzle over warm buns and serve immediately. Leftovers will keep in the fridge covered in plastic wrap for up to 4 days.