I think part of your problem may be that you have the wrong mental image of subflows. Don't think of it as something you call (any more than you call a Change node). When you place an instance of the subflow on a flow it is conceptually like placing a copy of all the nodes in the subflow on the page in a little box. Each flow where you place the subflow gets its own copy of the internal nodes. So when you pass a message to your subflow in flow A it goes through the subflow nodes that are in that flow, and when you do it in flow B the message goes through a different copy of the nodes. It isn't actually quite like that in the implementaion, but conceptually that is what happens. The only way you can cancel the delay in X(A) is by sending a message to the node in that copy of the subflow, you cannot do it by passing a message into the copy of the nodes in flow B. You could achieve it by using global context to pass messages between the subflows, but that would be a hack which would probably bite you at some stage in the future.
Did you investigate the possibility of using Link Call nodes rather than subflows as suggested earlier? It sounds as if that may better match your mental image of what you want to do.