Moved buttons into field's .ss template, moved "update from" behaviour into SiteTreeURLSegmentField.js, and added ability to set related field via data-* attribute using FormField->setAttribute('data-related-field', 'Title').
Appears that I stripped out a bunch of trailing whitespace during my editing. If this is a problem let me know.
This also fixes http://open.silverstripe.org/ticket/8032
Multiple SiteTreeURLSegmentFields can be used on the same page.