I think you have a few things that you need to work through first:
1) Activities behave as an SQS queue, to which you basically say "hey gimme the next activity". They don't support any sort of "gimme the activity for this execution ARN I happen to know" or any way to get a "specific" activity.
1.a) You can get around this by having a poller that polls for your activities when they get into the scheduled state by the Step Function. You need to then store the activity information (like a unique key you setup) in a way that your true "handler" can get its data (and its subsequent taskToken).
1.b) Your true handler then gets its nod from your ECS scheduled thing, looks up its key in the database, does the work, and then uses the taskToken to inform.
1.c) There are variations of this that you could do in a crazy parallel/Wait kinda way, to avoid the ECS guy having to get at the poller database... you'd basically just do that part first and then with the taskToken in hand you would kickoff the ECS stuff.
Beyond the above - which I think would be your true blocker and much harder part - It sounds like you are requesting two new timeout settings:
1) "ScheduledTimeoutSeconds" - how long it can wait in a scheduled state (before an Activity poller gets it) after which it would throw an error
2) "ActivityTimeoutSeconds" - how long it can take to actually handle, not including scheduling time, after which it would throw an error