RE your first question, can you give more insight/detail as to your actual data model and what's in the graph? How do you define what a "victim" is? Based on your current query, a "victim" is someone who has had a "disputed" transaction. When you say your query is returning people who are not victims, what kind of people (or "person"s) are being returned?
As for your second question, try this:
MATCH (victim:person)-[r:HAS_BOUGHT_AT]->(merchant)
WHERE r.status = "Disputed"
MATCH victim-[t:HAS_BOUGHT_AT]->(othermerchants)
WHERE t.status = "Undisputed" AND t.time < r.time
WITH victim, othermerchants, t ORDER BY t.time DESC LIMIT 5
RETURN DISTINCT victim.name as customer_name, othermerchants.name as store_name, t.amount as amount, t.time as transaction_time
ORDER BY t.time DESC
(Note the "WITH" and the "LIMIT". The second "ORDER BY" may become moot.)