I've used the standard Arduino/Genuino Zero bootloader for custom SAMD21G18A and SAMD21J18A boards without any issues. I've found it to be really reliable and if there are occasional upload problems, double tapping the reset button to put the board into bootloader mode has always recovered the situation.
There's no EDBG dependency. The Arduino/Genuino bootloader is designed to work with both the native USB port or the serial port (SERCOM5) on port pins PB22 and PB23, (although on my custom boards I've only ever used the native USB port).
The prerequisites are that your board drives the SAMD21G18A with a 32.768kHz crystal, has a reset button and uses a 2x5 way SWD connector. The SWD connector initially allows the bootloader to be burnt using a programmer such as the Atmel ICE. Thereafter the programmer can be removed and sketches uploaded using just the USB port.