This is frustrating and it happens to me too. I've been very methodical about iMatching my library. Here are some things to try.
1. If you haven't already started, move your music files to another location. Start with an empty itunes library. Add songs (drag to itunes) one album at a time. Get that album matched, delete the local copy (keep iCloud version), then move to the next. It's easier to tackle an album's worth of songs at a time than thousands at once.
2. After adding an album, highlight the songs, right click, add to iCloud.
3. If any songs do not match (status bars says 'uploading...'), stop the upload. Right click those unmatched songs and 'create MP3'. Then select the newly-created MP3s and add to iCloud. For some reason, this works alot of the time.
4. If a song won't match, check the same song's length in the store. I've had many CD rips where a song was a couple of seconds longer than the store version and it wouldn't match. Get Info, options, adjust the end time to match the store's length, then create an MP3 version of the adjusted file. Add to iCloud. This will only work for songs that too long, not too short.
5. If all else fails, re-rip your CD and try again.
I still have several random songs, ripped from official CDs and encoded by iTunes, that refuse to match. But I have most of my 5K library matched.