Controlling multiple PIC microcontrollers with a 2-wire setup via GPIOs
It seems like you're re-inventing a serial bus.  There is no need to do that.  Your scheme also doesn't scale so well since each slave needs one dedicated line to the master.

Since you're already willing to run two signals plus ground to each slave, CAN seems like a obvious way to go.  CAN scales to a bit over 100 nodes, all connected to the same two data lines plus ground.  The two data lines are actually a differential signal, so have good noise immunity.  That's important when you're going relatively long distances, like 10s of meters.

What makes CAN useful is that the protocol has been carefully thought out to deal with collisions, retries, message validation, and clock drift.  What makes it convenient is that all these things come built into silicon on many small microcontrollers.  The hardware takes care of sending and receiving whole packets, including generating and validating the 16 bit CRC checksum, detecting collision, backoff, retry, and clock sync.

CAN is a peer to peer network.  Any node can send a packet, and all the others can receive it.  Each message has either a 11 or 29 bit ID, and up to 8 data bytes.

You are using PIC 18F4550.  The 18F4580 is pretty much the same thing with a CAN controller added.