I believe this should work for you from NotebookA:
SelectionMove[NotebookB, All, Notebook];
SelectionEvaluate[NotebookB]
KernelB should do the evaluations, and you should see the results in NotebookB, without KernelA picking up any definitions from KernelB