Well, I had assumed you're an EE of some sort, or at least have a decent electronics background. But from memory, each GPIO pin on the board can only sink 3-5ma current at most. Depending on which pin it is. So this means you're going to need an external power source no matter what. Which means, maybe a buffer, maybe a transistor, plus an external power source this buffer or transistor "switches". Anyway, I'm no EE, so excuse the rough explanation here.
So, PWM I think is out of the question. If I understand what is going on: Which seems to be signaling over the tracks ? You tell me. But in this case, there are only really two options.
The first option, would be to use SPI for the signaling. Typically though, to use SPI in this manner is usually for "high speed" stuff. Which it does not seem you really need high speed for this. Also, I've never used SPI in this manner personally, and thinking of all the different things needing be done . . . it seems overly complex. But certainly possible.
The second option would be to bitbang GPIO. First, in this case I personally would opt to use one of the PRU's. Second, I would probably at least initially hack one of the DDR3 to PRU examples to do this. By this, I mean you write a bit pattern to memory, the PRU grabs it, and "spits" it out over a GPIO pin. I think here is where it would start to get really interesting for me - Since there would be a lot to consider, and learn. Because this value you write to memory could also be a bit field containing the value, GPIO timing, and a repeat value( as in how many times to repeat ).