I solved this by manually fixing each missing import API.
First I did a text dump of the unpacked dll using BinText where I found a list of imported API's.
I then compared it to the list of API detected by ImpRec and I noticed that the calls are in the same order on the text dump.
So I just double clicked the line of the invalid import on ImpRec and manually input the correct API (based on the order shown on the text dump) as seen here:
I repeated this for every invalid API and fixed the dump and this time it all worked.
To sum it all up from the original question. The OEP was correct. The detected API's were correct. It just needed a little intervention to fix the invalid imports detected.