The reason p and q are not equal is because the attacker is indeed pitted against the cumulative power of the entire network vs. being pitted against one miner.
If there was just one miner to compete with, then both the attacker and miner would have equal chances of finding the next block and p is indeed equal to q in that case (assuming identical hardware and hashing power). But when there are n miners, each of them working independently, then the chances that one of them finds the next block increase dramatically. The rate factor becomes $n \lambda$ instead of just $\lambda$. See https://en.wikipedia.org/wiki/Exponential_distribution#Distribution_of_the_minimum_of_exponential_random_variables and so now p/q=n. The mistake I had made
Another way to get above result is of thinkingto recognize that mining a block is like winning a lottery where everyone has equal chances (again assuming identical compute power). So if there are pn is invariant tominers plus 1 attacker, then np/q=n which is not the case as I now understand.
Bitcoin is pure genius.