Oh, cripes. I used to exclusively code MIPS R2000 in assembly code. There was a nice code reorganizer provided to fill in the branch delay slots. But I had no problem keeping in mind the fact that there was also no synchronizing flipflop keeping track of register writes from prior instructions and register reads in the next one and inserting delays --- they didn't include the ability, so there was no delay, so you needed to know that you'd read the old value and not the new one. So what? Dead easy to remember. I had no problems coding them in assembly and hardly ever needed the reorganizer's features.
It's nothing like you suggest as being "hard." You put your mind in the frame and just flow from there. You have to do that with anything, anyway.
Jon