Pyth, 1919 18 bytes
j" ~BOO!~ "cz]OStlz"cz]OtUz
Try it online.Thanks to @Jakube for golfing off 1 byte!
How it works
(implicit) Store the input in z.
lzUz Compute the length[0, of... len(z)-1].
t Subtract 1.
S TurnRemove the integer n into [1, ... ,first n]element.
O Select an integer, pseudo-randomly.
] Wrap it in an array.
cz Split the input string at that point.
j" ~BOO!~ " Join the split string, using " ~BOO!~ " as separator.