OK So I think I have this specific issue sorted out.
After some digging, I found that the failed read had to do with an error in entering the bootloader.
I only had SI2C_HwPrepareReadBuf_Callback() defined, so if the I2C transaction only contained a write from the master, my callback would never fire.
I am now properly entering the loader on command using SI2C_ISR_ExitCallback().
I also fixed the abnormally large ACKs when I came across this KBA:
Now I'm running into a whole set of new issues, but that's a story for another thread.
Chalk this up to big user error.