I know there are a trillion quindecillion different combinations possible with so many characters in an address,
FTFY. (A quindecillion is a trillion trillion trillion trillion.) Don't worry, you were only off by 36 orders of magnitude.

but how do all these wallets make sure no duplicate addresses ever get generated?
They don't. With numbers this large,
they don't need to.