#JavaScript (ES6), 93 bytes
JavaScript (ES6), 93 bytes
a=>a.map(s=>(L=s.length,g=n=>a.every(S=>S==s|!~S.search(u=s.substr(n%L,n/L+1)))?u:g(n+1))(0))
###How?
How?
For each string s of length L in the input array a[ ] and starting with n = 0, we use the recursive function g() to generate all substrings u of s with:
u = s.substr(n % L, n / L + 1)
For instance, with s = "abc" and L = 3:
n | n%L | floor(n/L+1) | u
---+-----+--------------+-------
0 | 0 | 1 | "a"
1 | 1 | 1 | "b"
2 | 2 | 1 | "c"
3 | 0 | 2 | "ab"
4 | 1 | 2 | "bc"
5 | 2 | 2 | "c"
6 | 0 | 3 | "abc"
7 | 1 | 3 | "bc"
8 | 2 | 3 | "c"
Some substrings are generated several times, but it doesn't matter. What's important is that all substrings of length N have been generated before any substring of length N+1.
We stop the process as soon as u cannot be found in any other string S in a[ ], which is guaranteed to happen when u == s in the worst case, as per challenge rule #2:
no string in the list will be a substring of any of the other strings
Therefore, in the above example, steps 7 and 8 will actually never be processed.