Limit workflow-based concurrent executions?

For such a use case, I would use a mutex workflow. The basic idea that for each such resource exists a single workflow execution that invokes that activity. All other workflows send signals to this workflow to request the activity execution. The mutex workflow upon receiving a signal invokes the activity or buffers it until the previous execution is done.

Here is a sample of such a workflow.