Your question overall needs refinement. You will first of all need to define how to identify the winner account in case there are accounts with duplicate names.
You can collect the Accounts in a Map possibly
Map<Id,Account> mapAccounts = new Map<Id,Account>();
// winning account logic here
use mapAccounts.keyset() to get a set of names of the accounts for you want to show for your lookup.
If you cannot determine a winner logic, an alternative would be to show another field along with the name of the account to help the user understand which account to choose. (It could be something like DUNS Number, Website, Account Code etc https://help.salesforce.com/articleView?id=account_fields.htm&type=5 )
Irrespective of how many Accounts you have in the Org, SOSL will only return a maximum of 2000 rows (Docs https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_sosl_limits.htm) I wouldn't worry about performance of handling 2000 rows.
From a end user perspective, 2000 rows is still a lot of data to choose from. You might want to look into reducing the results by prompting the user to add more/larger search terms.