Now that I think of it, passing parameters by reference would not be useful in this case.
Passing lists (pairs) by reference simply means creating a level of indirection to where the address of the first pair is stored. However, in a running program, there can be an arbitrary number of such locations.
I think that the problem of lists, of which the sort order is significant and which may be modified in arbitrary ways, can only be solved by,
a) having a global binding, that is, a global level of indirection that everyone uses, or
b) using a pair, of which the cdr remains unused, or some other reference-object as a level of indirection.