it's most certainly possible to verify any two messages are in the same merkle tree using only O(log(n)) data.
Yes, but that's not the problem. The problem is verifying that the message of lower sequence number has already existed when the message with the higher sequence number was created. Current ssb has that guarantee, the merkle approaches do not.