I came up with this method after kritth showed us that you can directly add a "Duration" key value to an "ApplyModifier" block and the use of the "Target" block without a Radius (defaulting to 0).

Basically, abusing the datadriven system we can do this on any event:

"ApplyModifier"
{
    "ModifierName"	"modifier_name"
    "Target"
    {
        "Center"	"TARGET"
        "Types"  "DOTA_UNIT_TARGET_HERO"
    }
    "Duration"	"%hero_duration"	
}

"ApplyModifier"
{
    "ModifierName"	"modifier_name"
    "Target"
    {
        "Center"	"TARGET"
        "Types"  "DOTA_UNIT_TARGET_BASIC"
    }
    "Duration"	"%creep_duration"
}

modifier_name being any modifier without a “Duration” specified directly in its block.

Hopefully this will make many codes that need to apply different duration to hero and creeps way better to read and polish. Until now I was using Lua to define the different duration but after seeing this system it’s just way better.