Any pruned files will be noticed during update and pruned from the live database, so this inefficient function can go away and never come back.
Our linked-list implementation is wasteful and the SongList isn't modified enough to benefit from being a linked list. So use a more compact array of song pointers which saves ~200K on a library with ~9K songs (on x86-32).