Place the sugar, flour, cornstarch and salt in a small pot and whisk to combine.
Gradually whisk in the milk, taking care to whisk out any lumps.
Place over medium-low heat and cook, stirring often, until thickened.
Pass the mixture through a fine mesh strainer, and into a heat-safe container.
Refrigerate for 2 hours or overnight.
Place the cooled mixture in a large mixing bowl, along with the lemon juice and vanilla, and whip on medium-high speed.
Whip in the cold cream cheese, a tablespoon at a time, allowing each addition to fully incorporate before adding the next.
Whip in the softened butter, a tablespoon at a time, allowing each addition to fully incorporate before adding the next.
Turn the mixer up to high speed, and continue to whip until doubled in volume and very fluffy.