Yeah, I figured there are hairy problems about scripts depending on arbitrary other transactions. Maybe Satoshi gave up on making script really work because he didn't know if he could do it right. Best to get a solid foundation first.
Just having more information about the transaction itself and a bit of global state could be useful. E.g., maybe locktime could be implemented in script, if the script could know the time. A script could check that its inputs are evenly distributed N ways across its outputs, for fair splitting of funds between partners or something. I guess multisig and other collaborative tx signing allows the key holders to mediate these kinds of things themselves.
I have thought about scripts being able to "call" prior transactions' scripts, to recycle useful but complex behavior, if the reference and some optional "patching" is shorter than duplicating the script itself. But as you say, this kind of thing would be a nightmare of inefficiency and DoS attack surface even at merely today's blockchain size.
