I don’t think it’s his drug past that is hurting him anymore. He’s been largely clean for at least 15 years.
Part of it is that he’s typecast as a 12 year old child and he still looks like that 12 year old child, despite that he’s a 40 year old man.
I think part of it is that he’s got a very distinctive face. Good working actors look like an everyman and he doesn’t look like an everyman.
I think the other problem is that, frankly, he's just not that good an actor. He's got one good movie, STAND BY ME, a couple of okay movies--LOST BOYS, GOONIES and GREMLINS--and the rest is pretty much crap.