no, you can't grab the sinklock here. This is also grabbed by GetDelay and GetCacheTime. 
AddPackets is the only point where the engine "sleeps". Holding a lock while sleeping is absolutely no-go.

Unfortunately I can't find some old code I did related to locking the buffers. This made AddPackets non-blocking by just checking whether any packets can be added to the buffer and sleep outside.