Questa cosa è molto interessante ma credo proprio che le soluzioni possibili sono analoghe a quelle che hai trovato.
Il "problema" è che il selectedValue è una proprietà string della dropdownlist che è "mappata" sulla proprietà "Value" di ogni singolo ListItem contenuto, ancora una volta di tipo string.
Quando tu assegni un valore al selectedValue, puoi farlo in due modi
ddl.SelectedValue = "null";
ddl.SelectedValue = null;
Nel primo caso prenderesti solo l'eventuale elemento con stringa "null".
Nel secondo caso non prenderai mai niente, e lo puoi vedere con reflection. Nella Set del SelectedValue di un ListItem (quindi anche di una DropDownList) il codice eseguito è:
...
if ((value == null) || (base.DesignMode && (value.Length == 0)))
{
this.ClearSelection();
return;
}
...
Quindi se value è null, ottieni solo che la ddl non abbia elementi selezionati.