You can make it run more cores this way:
1) A coreselector is loaded and run just like "minimig1.bit" is now. Once this is running it will put up a fileselector. And any selected core will have it's filename written to a eeprom area in the PIC18.
2) The PIC18 will reset the FPGA by playing with the PROG, INIT_B etc.. signals. And load the core again, but now using the filename selected in eeprom.
So a two-stage loader could make it happen with current pcb layout.
The default action if no bitfile is selected is to start the "last one selected" within 5s or such.
One could also use a small file on the flashmemory for bitfile selection. Maybe that would be a more portable idea.
Regarding ethernet. What you will need is a PHY. And you will need to wire up RX_Clock, RX_Datavalid, RX_Error, RX_Data[3:0], TX_Clock, TX_Enable, TX_Error, TX_Data[3:0].
For 1 Gigabit mode an additional 4 more databits will be needed per direction (GMII). Possible you may need MCLK and MDATA to configure the PHY aswell, but the defaults seems alright. A minimal setup will be 12 IOs and a full at least 16 IOs.