I don't know of any algorithm whose worst-case running time is reasonable. I list below an approach that almost works, but becomes slow when we add logic to ensure that no string is used more than once. Perhaps you can find a way to improve it.
Treat two strings $x,y$ as equivalent (written $x \sim y$) if you can obtain one from the other by repeatedly removing or inserting $()$. For instance, $()( \sim ( \sim (()$.
Now, every string of parenthesis is either (a) equivalent to $)^i (^j$ for some $i,j \in \mathbb{N}$, or (b) cannot appear as a substring of any string with balanced parentheses. In case (b), there's no way to extend it to a solution to the problem, so such strings can be ignored, and we can focus on case (a).
We'll identify each string of parentheses with the tuple $\langle i,j,\ell \rangle$, where the string is equivalent to $)^i (^j$ and $\ell$ is the length of the string. Build an (implicitly-represented) graph corresponds to all valid sequences. We'll basically do pruned search in this graph.
In particular, we'll imagine a graph with one vertex for each valid sequence, and with the edge $u \to v$ if the sequence $v$ can be obtained from $u$ by appending one of the $n$ strings to $u$. Now, you can search the graph to find all vertices that are reachable from $\epsilon$ (the empty sequence of length 0). We're looking for the longest configuration of the form $\langle 0,0,\ell \rangle$ (i.e., the one where $\ell$ is as large as possible).
You can use any graph reachability algorithm, such as BFS. However as a heuristic I would suggest prioritizing exploration of longer configurations first, e.g., using a priority queue that is keyed on $\ell$. (Equivalently, you can think of this as using Dijkstra's algorithm where the length of each edge is the number of symbols appended -- the amount that it increases the length of the sequence.)
The problem with this approach is that it might end up using some of the $n$ strings more than once. Here is one way to fix that: now a configuration is given by $\langle i,j,\ell,S \rangle$, where $S$ represents the subset of $n$ strings that were used to construct this string. Unfortunately, now there can be exponentially many configurations.
A possible advantage of this approach is that you don't try to explore all orderings: you can prune sequences can't possibly be present in any valid answer, and thus possibly explore fewer than all possible subsets and orders. That said, this could still take exponential time in the worst case, so it might fail to be feasible.
This approach is asymptotically slightly better than the brute-force approach of exhaustively trying all possible sequences. The brute-force algorithm takes $O(n!) = O(2^{n \log n + O(n)})$ time. The approach I list here takes $O(n^3 2^n) = O(2^{n + O(\lg n)})$ time, which is better... but still exponential, alas.