Use transaction comparison to decide to render or not

The previous approach has issues, mostly to do with this.getRoot()
returning null when a one-off node is created and not attached to a
surface. This uses a simpler (previously unworkable) approach which
doesn't depend on a reference to surface being available.

Change-Id: I4d1377950b72ffbc190c2b8cee8175e19674e34a