Usando pd.to_datetime() em cada elemento funcionou. A opção 4, que não funciona, aplica pd.to_datetime() a toda a série. Talvez o driver Postgres entenda python datetime, mas não datetime64 em pandas &numpy. A opção 4 produziu a saída correta, mas recebi ValueError (veja o título) ao enviar o DF para o Postgres
timesAsPyDt = (spy0030Df['dt']).apply(lambda d: pd.to_datetime(str(d)))