I can't think of a reason why reading the list in reverse order should be a problem, except that you'd probably need to keep track of an extra variable which is responsible for knowing whether you are currently going through the list forward or backward. If you must reverse the contents of the list, there isn't any built-in function to do this that I can see. So what you'll have to do is copy the contents of the list into another list, which will require you to read the first list in reverse order anyways.
ds_list_copy() ought to have an option to copy in reverse order (but doesn't).