The wallet's idea of its balance is irrelevant. It's the network's accounting that matters. That is what is authoritative. A wallet merely reports it.
There are really two scenarios here:
Double-spending and confirmation, generally, and
Your brother is using the same signing key.
You don't need your brother to try a double-spend. Just sign two ...
If the transactions are created close to each other they are possibly valid transactions. If one transactions has already been processed (mined) and the wallet knows about this then the wallet refuses to even send the second transaction.
If both of the transactions are accepted by the wallet they are added to an abstract transaction pool which is basically ...
The difference is what RPC method is being called under the hood. From the docs:
web3.persal.getAccounts returns a list of accounts the node controls by using the provider and calling the RPC method personal_listAccounts.
The results are the same as web3.eth.getAccounts() except that calls the RPC method eth_accounts.
You're trying to apply a model that is appropriate for Bitcoin mainly due to its limitations. It will be an awkward strategy for Ethereum that overlooks it's strengths.
Bitcoin: Not especially programmable, but easy to sweep funds from multiple accounts.
Ethereum: Especially programmable, but not so easy to sweep funds from multiple accounts.