Decided to manipulate hierarchy order after all and it's working pretty well.
I added
for (int i = 0; i < numRows; i++)
{
inventoryRows[i].transform.SetSiblingIndex(i);
}
to a slot manager script to remove the random ordering upon pressing play, and used transform.SetAsLastSibling() in my DragHandler script when dragging begins.