i don't know man. May be canister is faulty since you said charcoal is spilling through it. When amount of charcoal decreases, it will cause excessive sucking of air through drain pipe, the pressure from tank won't be sucked this way since fresh air from canister drain will keep entering into manifold. But once you block the purge valve pipe, air is not sucked in anymore and fumes from tank will keep releasing to atmosphere through drain pipe of canister since fresh air is not getting in. Air/fumes can flow in only one direction through a pipe, we all know that.
The other possible reason could be manifold/throttle is excessively sucking fumes from tank causing low air pressure in tank because canister drain is choked and fresh air is not entering inside. Low air pressure in tank will hinder smooth flow of petrol through fuel pump. In that case, fuel cap might be the culprit since it has a one way air vent and it is not letting excessive air to enter the tank.
For testing purpose, drive you car around by directly connecting pipe coming from tank to purge valve bypassing canister (never bypass purge valve since it regulates the air pressure being sucked in. Bypassing it will damage your tank). If it doesn't solve the problem then ultimately it's the fuel cap fault.