Craig,
you need to add a Method-> "Queued" to the go button
DynamicModule[{walkers = ConstantArray[{{0, 0}}, 50],
animate = False}, Column[{Row[{Button["Go", animate = True;
While[animate, walkers = updateRandomWalk /@ walkers;
FinishDynamic[];], Method -> "Queued"],
Button["Stop", animate = False, Method -> "Preemptive"]}],
Dynamic[Graphics[displayWalker /@ walkers,
PlotRange -> 50 {{-1, 1}, {-1, 1}}]]}]]