This is a really good questions and one without a specific "right" answer. It essentially boils down to what the most acceptable compromise is.
Either A) You force users to pay their base fee for account creation.
Or B) You live with the possibility of manipulation.
C) Some combination of the two.
Here are some possible compromises:
- Lobstr uses a loan repayment method where you "borrow" the base fee until you have enough XLM in your account to pay it back. In essence you have an unfunded account which doesn't really exist until you pay back the base fee from some external account.
- You maintain signing control over newly created accounts for a short period of time until you're able to prove the account is legitimate. (If the base fee is 5 XLM don't sign for txns which would take the balance below 5 XLM).
- Employ better unique personhood proofs. This one is the most difficult as at the end of the day it's just not that hard to spoof unique personhood without invasive KYC forms. Depending on your app though this may be an acceptable compromise.
Right now my ideal scenario is a spin on 2. involving a new in-progress SEP involving smart contracts and Turing Signing Servers. Essentially you'd write a smart contract which would lock up an account either indefinitely, for a period of time or until specific condition(s) were met. Some actions could be allowed but only through the Turing Signing Server. You'd maintain a custody free operation while still holding contractural control over newly created accounts.
You can watch this video to get a sense of what I'm talking about: https://youtu.be/T7FlHKbew4U
Hopefully that helps, I'm certainly happy to explain more or to help setup such a smart contract. You can find me on Keybase