If you're that worried about it, if you've got: "(3) a potion of flight, there's nothing stopping you from doing: "quaff 3.flight" or "get 3.flight backpack". That should pull from the bottom rather than the top. Not to be confused with a "3.potion" which will do the third potion type in your inventory.
In other words, if you have:
(3) a potion of giant strength
(4) a potion of flight
(5) a potion of detect invis
"quaff 3.giant" should get you to quaff the third (oldest) potion of giant strength while "quaff 3.potion" will make you quaff the top (newest) potion of detect invis.
And as this isn't likely to become a coded thing anytime soon as Foxx states, to help with the "but when I get a new one, it's placed on top" or "I don't want to have to look before I quaff for various reasons", you can set up a trigger/alias to do it for you.
#trigger {You (buy|get) a scroll of giant strength.} {#add @giant 1}
#trigger {You (buy|get)} a feathered scroll of flying.} {#add @feathered 1}
#trigger {A scroll of giant strength crumbles from disuse.} {#add @giant -1}
#alias recite (%w) {recite @{%1}.%1;#add @{%1} -1}
Something like that should keep track of your various scrolls/potions/herbs/etc in their own variable, and adjust the variable automatically when getting new ones or using old ones. Keep in mind that this example is very untested, very rough and completely inelegant, but should illustrate my point.

