Простое решение может состоять в том, чтобы создать список списков, а затем вытолкнуть строку из случайного списка, пока все они не будут исчерпаны:
>>> import random
>>> filerecords = [['File{0}Record{1}'.format(i, j) for j in range(5)] for i in range(5)]
>>> concatenation = []
>>> while any(filerecords):
... selection = random.choice(filerecords)
... if selection:
... concatenation.append(selection.pop())
... else:
... filerecords.remove(selection)
...
>>> concatenation
['File1Record4', 'File3Record4', 'File0Record4', 'File0Record3', 'File0Record2',
'File4Record4', 'File0Record1', 'File3Record3', 'File4Record3', 'File0Record0',
'File4Record2', 'File2Record4', 'File4Record1', 'File3Record2', 'File4Record0',
'File2Record3', 'File1Record3', 'File2Record2', 'File2Record1', 'File3Record1',
'File3Record0', 'File1Record2', 'File2Record0', 'File1Record1', 'File1Record0']