The answer was staring me in the face all along! Use the same BeginInvoke method to restore my place outside the AfterLabelEdit event handler! Final code looks like this:
Private Sub tvInventory_AfterLabelEdit(sender As Object, e As System.Windows.Forms.NodeLabelEditEventArgs) Handles tvInventory.AfterLabelEdit
SaveMyPlace()
tvInventory.BeginInvoke(New MethodInvoker(AddressOf tvInventory.Sort))
tvInventory.BeginInvoke(New MethodInvoker(AddressOf RestoreMyPlace))
e.CancelEdit = False
End Sub
Private Sub SaveMyPlace()
SavedSelectedNode = tvInventory.SelectedNode
SavedTopNode = tvInventory.TopNode
End Sub
Private Sub RestoreMyPlace()
tvInventory.SelectedNode = SavedSelectedNode
tvInventory.TopNode = SavedTopNode
End Sub