Python 2, 117 116 bytes
def f(n):r='',;exec"r=[s+c for s in r for ct in')('[sin[s.count(')(')*2>=len]for c in')('[t+t==len(s):2-s.count('(')t/n]];"*2*n;print'\n'.join(r)
This builds the strings character by character, without filtering.
With piped output and input n = 15, this takes roughly 39 seconds with CPython and 87.5 seconds with PyPy on my machine. Memory consumption is 1.6 GB with CPython and 32.35 GB with PyPy.
Test it on Ideone.