Why do we do it? It's a 20th century aberration. In the 19th century you could buy opium over the counter. Most of the great Victorians were sozzled or high most of the time. People were sorry and/or disapproving of the hopeless addicts, but they didn't consider them criminals.
To punish someone for having a rock in his pocket (for his own use, dammit- I'm thinking Gil Scott Heron)- that's barbaric.
A generation or two down the road people will look back in disbelief. It'll shock them the way we're shocked at Jim Crow or the Magdalen laundries. They'll think, "how could they be so cruel?"