Paths between two nodes, filter by relationship type and node label

I am trying to get the paths in a fine-grained manner. I have come up with the following query, with the idea to get the linkage between a person called Hampus and a place called Pizza Hut, via either some other people (that Hampus is connected to), some group or team (that Hampus is a member of). It's a dense graph and there are numerous types of node labels and relationship types, hence the filtering.

CALL db.relationshipTypes() yield relationshipType WITH collect(relationshipType) as rt
WITH [n IN rt WHERE NOT n IN [...]] as rt2 
WITH REDUCE(ms = "", word IN rt2 | ms+word+'|') as js
WITH LEFT(js, SIZE(js)-1) as relationshipWhiteList
MATCH (start_node: Person {name: "Hampus"})
MATCH (end_node: Place {name: "Pizza Hut"})
CALL apoc.path.expandConfig(start_node, {
    relationshipFilter: relationshipWhiteList,
    labelFilter: '+Person|Group|Team|-Occupation ' 
    minLevel: 2,
    maxLevel: 3,
    terminatorNodes: [end_node],
    uniqueness: "NODE_PATH",
    bfs: false, 
    limit: 3
YIELD path
RETURN path, length(path) AS hops

The query above practically never returns, but instead throws a Heap OutOfMemory exception. The interesting thing is that if I remove the labelFilter (and whitelist all node labels essentially) then the compute time is relatively small, manageable for up to 250 paths in any case. My idea was that introducing further filtering would be better not worse.

What am I missing here? Why is this query not returning even for such a small limit like 3?