Voter registrations could be checked against the Social Security database. Not only would non-citizens be spotted, duplicate registration would end immediately.
That's actually a really awful idea. Firstly: not everyone has a social security number. For example, some Amish refuse to get one. They are still citizens of this country, and should be allowed to vote.
Secondly: There are a quite a few people who know my social security number. My parents, my wife, several past employers, my current employer, several banks, my past landlords, and my current landlord. Under your proposed system it would be very easy for any of these folks to invalidate my right to vote by registering in my name with a false address. (They probably could not actually cast my vote, but they could prevent my vote from counting if I lived in a state without same-day registration.)
Thirdly, we should not solve the problem of duplicate registration without first investigating whether it is actually a problem, and if it is, the extent of the problem.