Don't always return array on previously looked up fields

The problem was that on a second call to field() $this->row[ $params->name ] is populated,
so $value is set from that and the whole big next block that sets $single isn't called.

Fixes #2347
Fixed #2166