I am in favor of b, since it makes 1 DB call
Your instincts are correct.
Then again, since the 2nd call is checking the entire DB table for the existence of multiple records, I am not quite convinced.
Both methods are searching for exactly the same rows, so there is no difference there1. The difference is that for the first method, the price of the database round-trip will be paid once per row, and for the second method only once regardless of the number of rows.
What I am really interested in knowing is the performance of making 1000 calls to the DB to check if a uniqueColumn value is present vs making 1 call to the DB to check which of the uniqueColumns are duplicates.
I suggest you measure for precise results, but I'd expect 1 "big" query will be significantly faster than the 1000 "small" queries.
1 Actually there might be, in favor of the big query, if your DBMS can parallelize the query execution.