It may be that I took one too many stupid pills this am but I really don't understand why you "think that what (you) need to do is sort (your) normal hours according to ..." ...DOW. It appears that you expect the db to cough up the row with reasonable sorting ... Sun-Sat... and the biz hours row to do likewise so your requirement is merely that you select today's DOW as your starting point in each case and proceed thru DOW + 6.
And, without working out the details, numerous questions on mergine two arrays; on dispatch tables; or perhaps slices would spare a lot of unnecessary work.
If I've misconstrued your question or the logic needed to answer it, I offer my apologies to all those electrons which were inconvenienced by the creation of this post.
If you didn't program your executable by toggling in binary, it wasn't really programming!