It is hard to understand what your actual problem may be. In other words, you do not state what you *expect* your code to do and what you expect to see as a result. But let me point out a few things:
<item current_pic>
</item>
<picture picture>
/items = current_pic
/position = (50%, 50%)
/size = (60%, 60%)
/erase = true (255, 255, 255)
</picture>
The above <picture> element sample randomly without replacement from <item current_pic>. You *keep adding* items to <item current_pic> at runtime per your <expressions>
<expressions>
/ w123_v1 = if ((values.order_count<5) || (values.order_count==6) || (values.order_count==7) || (values.order_count>8)) item.current_pic.item = values.current_picD;
if (values.order_count==5) item.current_pic.item = values.current_picT1;
if (values.order_count==8) item.current_pic.item = values.current_picT2
/ w123_v2 = if ((values.order_count<9) || (values.order_count==10) || (values.order_count==11) || (values.order_count>12)) item.current_pic.item = values.current_picD;
if (values.order_count==9) item.current_pic.item = values.current_picT1;
if (values.order_count==12) item.current_pic.item = values.current_picT2
/ w123_v3 = if ((values.order_count<13) || (values.order_count==14) || (values.order_count==15) || (values.order_count>16)) item.current_pic.item = values.current_picD;
if (values.order_count==13) item.current_pic.item = values.current_picT1;
if (values.order_count==16) item.current_pic.item = values.current_picT2
/ w456_v1 = if ((values.order_count<6) || (values.order_count>6 && values.order_count<12) || (values.order_count>12)) item.current_pic.item = values.current_picD;
if (values.order_count==6) item.current_pic.item = values.current_picT1;
if (values.order_count==12) item.current_pic.item = values.current_picT2
/ w456_v2 = if ((values.order_count<8) || (values.order_count>8 && values.order_count<14) || (values.order_count>14)) item.current_pic.item = values.current_picD;
if (values.order_count==8) item.current_pic.item = values.current_picT1;
if (values.order_count==14) item.current_pic.item = values.current_picT2
/ w456_v3 = if ((values.order_count<10) || (values.order_count>10 && values.order_count<16) || (values.order_count>16)) item.current_pic.item = values.current_picD;
if (values.order_count==10) item.current_pic.item = values.current_picT1;
if (values.order_count==16) item.current_pic.item = values.current_picT2
</expressions>
Every time one of those expressions is run by any of your <trial> elements, *another item is added* to the <item> element. Any previous items *do not dissappear* and the <picture> element will consequently sample from an ever-growing set of items as the task progresses through its blocks. If you want to remove items, you need to clear() the item element at an appropriate point in time.
With respect to your <list> elements, please consult the documentation for the /resetinterval attribute and be aware of the fact that -- contrary to <text>, <picture> or <counter> elements -- <list> selection pools *do not reset between blocks by default*.