I *believe* (and may be incorect) that p2pool will wait for a valid share (pool wide) before sending new work @ 30 seconds on average. I recall a couple years ago discussing this with someone. As P2Pool does not subscribe to bitcoind blocknotify it is not aware of the block change...
If I am right and this is the case, setting up a blocknotify flag in Bitcoin.conf and integrating it into the code should not be to hard, but I suspect there is a reason Forrest set it up this way? (Or maybe -blocknotify did not exist then?)
Yeah sorry this was my mistake at misreading what debug output I had so it was a false positive.
Investigated further and added debugging to see when GBT was called since calls to CNB are cached and it is indeed calling GBT immediately after a blockchange, so this was all my fault for not noticing, sorry about the noise.