The tough part is that you have to rebuild some of the state machine that the video player already has. For instance, fast-forward isn't just setting some UI chrome and telling the video node to fast-forward. There is no `videoNode.control = "fastforward"`. So you simulate it by pausing the video node, noting that you are in the fast-forward state while you periodically update your UI during the seek. Now for every other possible videoNode.state change or remote button press, you have to check if you're fast forwarding and reset your state, and so on...
An alternative is that you can provide a lot of customized visuals for the default controls. `videoNode.trickPlayBar.filledBarImageUri` for instance.
Also be aware that the publishing checklist mandates certain playback behavior such as FF steps, replay jumps, cc dialogs, so you can't stray too far from the default.