Você pode usar uma função agregada para obter o registro mais 'relevante' para cada e-mail.
Acho que esta consulta lhe daria o melhor resultado:
SELECT emailAddress, max(concat(fullName,',',address1,',',address2))
FROM table
GROUP BY emailAddress
Ele retornará a linha mais rica para cada endereço de e-mail, mas todos os dados serão retornados em uma string (separada por vírgula), então você terá que analisá-la de alguma forma.
Se o desempenho não for problema e você quiser obter um resultado normal definido em campos separados, poderá usar um:
SELECT table.emailAddress, fullName, address1, address2
FROM
table JOIN
(SELECT emailAddress,
max(concat(fullName,address1,address2)) as bestRowInOneString
FROM table
GROUP BY emailAddress
) bestRowsSubQuery
ON
concat(table.fullname,table.address1,table.address2) = bestRowsSubQuery.bestRowInOneString
AND table.emailAddress = bestRowsSubQuery.emailAddress