Several bases but not twice the same digit
JavaScript (Node.js),192,155,154,152,151,145,136,113,99,92 90 bytes

thanks to @Arnauld for reminding me that i can return [0,1,2,3] -&gt; which is [2,8,10,16] saves 8 bytes, and for the brilliant idea (which help to reduce by 23+ bytes)
thanks to @Kevin Cruijssen for reducing by 1 bytes


f=([c,...a],t=&quot;&quot;)=&gt;c?[1,4,5,8].find(b=&gt;T=!/(.).*\1/.test(n=t+c.toString(b*2))&amp;&amp;f(a,n))+T:a

Try it online!
Explanation:
[c,...a] - @Arnauld trick for taking one item at a time
c?***:&quot; &quot; -&gt;if c is undefined we managed to get to the end result- [] - if i would put &quot;&quot; than the find would not considered that legit. ([]+5=&quot;5&quot; JS FTW)
[1,4,5,8].find every time we find the correct base (the output will be of this array (1,4,5,8)-&gt;(2,8,10,16) its legit.
now how the find works -&gt; if it finds something it returns the element (1-8)
and than i add the result of the inner solution. if it doesnt find then it returns undefined + T is now false -&gt; NaN which in the parent call will be considered false
!/(.).*\1/.test(n=t+b) determine if the string has duplicates, if so:
f(a,n)) just go the the next number(a is now array.slice(1)) with the new string(n)
we assign result to T(temp) of the result because find stops when it finds and so we know that the last result will be f() which is result B