JOIN not to timeout

We have the following requirement:

Step B waits for transition from Step A and subscritpion to document A (AND Join). If the document A does not arrive within a certain time, we would like the ability to have Step B start and continue the process (and not timeout)

Is there a way of accomplishing this (may be through XML/Xpath expressions in Complex Join)?

I have found a workaround to this (though I dont like it)

Step A + Document A transition to Step B (AND Join)
Step B timeout transitions to Step C

Step B calls a flow service FS to perform some tasks
Step C calls the same flow service FS

Step B and C both have an OR join to the next step in the model.

If Doc A arrives on time, Step B will execute (normal case) and proceed with other steps
If Doc A doesnt arrive on time, Step C will execute (timeout case) and proceed with the other steps