that's right.
an emulator can do it, as it's processing different information at the same time, but the console expect the controller input to happen on the current console, there's no network layer added to check and send the input to the game by emulating the controller.
(that's how I think netplay works, I didn't check the sources).
There's a chance it's an issue with your loader's settings.
If you have old and new version of the loader, they don't mix together very well.
For example, if you have the latest revision on SD card (launched from HBC), it contains newer settings and options.
If you set an option which didn't exist on an old version, then running that version will crash if it tries to read an unknown values. For example : running an outdated dol installed in Priiloader, or launching a full channel with rev1180.
Be sure you are using r1260.
If it still happen, try reseting the settings from the loader's menu, or manually (delete all .cfg and .bin file in your usbloader_gx folder)