The best solution I'm aware of turned out to be using a transaction, which allows me much of the benefits as if this were a single query:
await db.transaction(async (tx) => {
const [user] = await tx.insert(users)...
const [settings] = await tx.insert(settings).values({ user_id: user.id})
})