Generally speaking, indexed queries are faster than streams for search use cases, but it could add some overhead during normal data writes due to indexing. If you will be doing only infrequent queries, this could not be justifiable, specially if the dataset is small.
I'd recommend to start using streams (or non-indexed queries which uses stream internally) and if perf is not satisfactory I'd move to indexing.
Regarding "populating the entire contents of the distributed cache into any one node", could you clarify? Is you search result expect to be very large? Query does support pagination and iteration, and Streams have similar mechanisms.