I'm having exactly the same problem. It happened after I moved my music library from my PC to my Mac (after a few failed attempts due to poorly PC)
I have over 6000 songs, and it has affected songs throughout my library, including purchased songs, and I only find out which ones, as I come to play them.
Re-importing is an option, but to be thorough, I would have to do my whole CD collection. As for the purchased songs, I'd have to put them onto CD and re-import them. This does work, as I've tested it.
But surely there is an easier fix. It's just like iTunes/iPod has simply 'forgotten' where the tracks end. The whole songs are still there, and if you skip passed the point where it 'thinks' it ends, it will continue and play to the end of the song.
Does anyone know how to fix this problem without re-importing?