Dalla traccia dello stack e dall'esempio di codice sembra che tu non stia riutilizzando lo stack Cayenne (oggetto ServerRuntime), creandone uno nuovo ogni volta. Oltre ad essere lento, questo introduce anche una perdita di risorse. Ogni ServerRuntime contiene il proprio pool di connessioni che non viene chiuso. Quindi prima o poi il server PostreSQL viene sovraccaricato di connessioni aperte.
La soluzione è trasformare ServerRuntime in un singleton con ambito app (ad esempio, renderlo una var statica di AccountsDBruntime) e riutilizzarlo ogni volta che è necessario un nuovo ObjectContext.