Per SQL ist ein direkter Zugriff auf 2 verschiedene Datenbanken leider nicht vorgesehen.
Es klappt weder ein "insert into ... select ... from " noch ein Join.
Du hast da leider nur die Möglichkeit, die Daten zwischen den DB's über eigene Tabellen zu synchronisieren.
Eine Prozedur oder auch Table-Function kann da zwar helfen, wird aber i.d.R. nicht performant sein, da ja die Where-Klausel u.U. nicht klappt.

Und wer behauptet denn sowas "ein Programm kann sich für einen SQL-Zugriff auch nur mit einer DB "gleichzeitig" verbinden."?
Natürlich kann man sich durchaus gleichzeitig mit mehreren DB's verbinden.
Dafür gibt es
a) "Connect to" zur Ziel-Datenbank
b) "Connect reset" zur lokalen Datenbank
Diese Befehle können beliebig oft wiederholt werden, wobei der Connect To nur beim 1. Aufruf tatsächlich eine neue Verbindung erstellt.
Geschlossen werden die Verbindungen erst am Ende.

Es gibt allerdings noch eine 2. Möglichkeit:
Ein Tabellenname ist eigentlich 3-teilig:
- DBName/Schema/Table
- DBname.Schema.Table
je nach Namenskonvention.
Da die Namenskonvention aber für das Gesamtprogramm gilt und andere DB's eher selten mit "/" zurechtkommen, bietet sich halt Naming=*SQL eher an.

Somit kann man mit:
select * from MyLib.MyTable
bzw.
select * from DestDB.Schema.Table
unter Umgehung des Connects aus beliebigen DB's innerhalb des Programmes lesen.
Per "CREATE ALIAS MYLIB/MYTABLE FOR DestDB.Schema.Table" kann man das noch anonymisieren.

Für das JVAGATE/ArdGate kann man in der Konfiguration einen Defaultuser/Kennwort hinterlegen.
Für AS/400-Verbindungen kann man per
ADDSVRAUTE USRPRF(*CURRENT) SERVER(RDBName) PASSWORD(MEINPASSW)
das Verbindungskennwort permanent hinterlegen.