In a mixing bowl, whisk together the sugar, cocoa, cornstarch, and salt. In a thin stream, whisk in the milk until smooth. In a thin stream, whisk in the half-and-half until smooth. Strain the mixture through a fine sieve into a saucepan. Over medium heat, whisking the mixture constantly, bring to a boil. Boil gently for 2 minutes. Turn off the heat and stir in the bittersweet chocolate and vanilla. Fill a large bowl with ice cubes, rest the saucepan on top, and add cold water to cover the ice cubes. Let the mixture cool, stirring frequently, about 15 minutes. Fold in the white chocolate and pour the mixture into 1-cup ramekins, cups, or mugs. Refrigerate until well chilled. The recipe can be made up to 2 days in advance. Serve cold.