Thanks guys for your comments.
It lead me to recheck the CI Model/BaseModel code and realised it will only return the insert ID for auto-incrementing primary keys.
In my case, uid was not auto-incrementing so I had to pass FALSE as the second parameter to insert() to get it to return a bool instead.
I don't think any of this is documented in the User Guide. If it has been mentioned, please let me know where I can find it for future reference. Thanks!