I was getting exactly the same problem and in the end I gave up trying to update from a scripted download instead I grabbed the update bundle zip file from https://my.vmware.com/group/vmware/patch#search
1. download the zip file
2. upload it to a datastore
3. i renamed it to update.zip (optional really)
4. esxcli software vib update -d /vmfs/volumes/<DATASTORE-UUID>/update.zip
5. reboot
I still have no idea why the other method was causing the 28 error despite trying all of the swap/locker/clean solutions but this one worked and as I am typing it is now up to date.
Hope it helps someone else.