"Driver" is a higher level interface with mutexes and request queue management. It is designed more for RTOS use. For master mode, it is easy to implement, since you have multiple tasks trying to talk to multiple devices on the same bus. But for the slave, it is not so easy and not really necessary, since slave functionality typically represents once device to the outside masters.
You get all the APIs you need to work with the peripheral from the basic block, so just use that.
PLIBs is what you want here. I don't understand the "too simple" part. If it does what is necessary, then why it is bad that it is simple?