@MarcoFalke nBits updating depends on whether CreateNewBlock() is called. That is to say, nBits will be updated when CreateNewBlock() is called. It indicates the miner is mining the same height block at the current time at least if CreateNewBlock() is not called. So the nBits needs not to be update, just use cached blocktemplate.
The following is the condition of calling CreateNewBlock():
0if (pindexPrev != chainActive.Tip() ||
1 (mempool.GetTransactionsUpdated() != nTransactionsUpdatedLast && GetTime() - nStart > 5) ||
2 fLastTemplateSupportsSegwit != fSupportsSegwit)