Read the error messages closely...
When you issued
mount 192.168.0.4:/Public/<subdirectory> /storage/<local>
... you got 'bad file descriptor'. To me, that means that one of /Public/<subdirectory> or /storage/<local> doesn't exist - probably the former - as above, I think you're sharing Public, not the subdirectories within that, and you can't mount something that isn't shared.
You then have the 'permission denied' messages, which are almost certainly related to how it's exported from the WD box. I haven't dug completely through the manual, but make sure you have something set that defines universal R/W access or some clearly-named account that has the right level of permission (whether that's admin or something else). If your Public share is, well, public, then it suggests that no user credentials are required; if it's private, then you need to define a specific user as which you'll then mount that directory.
In the third mount command, you have the path wrong and the syntax wrong: you're trying to mount //<IP>/<directory> instead of <IP>:/<directory>, and you're trying to mount it to storage/<local> instead of /storage/local
I think you're probably heading for something like:
mount -t nfs -o username=admin,rw 192.168.0.4:/Public /storage/public -o nolock
... or some variation, depending on what options you need in order to correctly connect.
PS on the Kodi angle, Kodi is browsing the network and mounting the share within the application - it has its own NFS and SMB clients. So, you can see from that what the path to the share is: when you first browse the network in Kodi, it'll name the device (MyBookLive) and list the available shares - that's the level at which you need to mount, not below.
PPS you also don't say if Kodi is using SMB or NFS. The WD manual doesn't seem to go into detail, so I assume it defaults to sharing using both protocols - in which case, you could try mounting as -t cifs (i.e. SMB) instead of -t nfs.