Hello,
My 5 cents. I think my situation was similar. I had a brand new environment and had to import : 1280 Contacts, 528 Companies and 280 'Deals'. It started with big frustration and zillion of errors.
1. I made 4 (!) csv files. Based on the templates I downloaded from each entity. (in 1st step I used only basic fields, for example for contact I started with only the first name, last name, account and email. Same basic set for Accounts.
The deals I had to split up : all that was 'very early stage I placed in Leads, everything from qualified and up I placed in Opportunity.
2. then i zipped the 4 files together. (yes 1 zip file) and uploaded this zip in the 'data import wizard'.
3. Seen I used the names 'Account.csv', 'Contact.csv', 'Opportunity.csv', 'Lead.csv', the system recognised the entities I tried to import.
4. When you use the exact same 'Display Names' as Column name, the system should also be able to find the match. I always checked all the exclamation marks and changed my csv file accordingly, and restarted the upload.
5. Once all was accepted without any error or unmatched field, I started adding some more fields and more completed records.
Once in a while I did the real import as well checking the errors and bulk deleted accordingly.
(to be completely honest, I wrote a Python script to transform from my source data files to my csv files, but I'm sure if you are somewhat handy with Excel this should work as well)
For more detailed info on how my data should look I used the documentation around API.
For example when you look at an account, you can find here exactly what are possible elements for a record : docs.microsoft.com/.../account
at this moment I have only 2 errors on 1280 contacts and 1 error on an opportunity, so I'm happy ;-)
Hope this helps,