You probably could do it with a plugin to manipulate the instance list. In the edittime.js make an action that takes an object type as a parameter. Next in runtime.js you can get the instance list and manipulate that. Here's a reference of what you can do with arrays in javascript:
http://www.tutorialspoint.com/javascrip ... object.htm
Actually after writing that out I realized it's more complex than that since new objects aren't added to that list till a toplevel event. So the action wouldn't work on newly created objects. It's probably a non-trivial change in c2's engine as well because of that, or even because of other deep engine reasons. Not to mention it's a unique requirement so it may not be readily added.
Anyways, in cases like this I like to use an array that I store uids into as I create the objects, that way I have full control of their order. Maybe also using a function and a variable to make the expressions look less busy.
As to the op you can change the iids of an objects by destroying them and recreating them in the order you want, at the expense of losing their uids.
Maybe a more nifty feature request would be to use -1 instead of object.count-1 to pick the last instance. It currently doesn't work with the "pick nth instance" condition. It does work in expressions though: Sprite(-1).width