1. Limiting block weight size (which is 4000 kWU).
2. Set minimum transaction output (AFAIK, it's about 500 satoshi).
3. Protocol which won't let anyone upload/broadcast unnecessary data besides valid transaction into Bitcoin network.
4. Set minimum accepted fees which is 1 sat/byte, but AFAIK it's possible to set it lower even though some miners or nodes might ignore that transaction.
Thank you for collecting the alternatives!
I don't define it. I am just saying that OP's problem can be solved with a soft fork.
It is hard for me to explain why I used the words I did. I just found this to be best way to answer OP's question in a way he will understand my point in an easy way.
It is feels really "meta" that I am talking about this. Discussions on forums always seem to work this way and I am not sure why.
It is alright. Personally, I would define junk transaction as "Junk transaction is a transaction that was created with the intention to maliciously take place in the blockchain." or "Junk transaction is a transaction that contains more data than what would be necessary to serve a given purpose." These are my personal thoughts after a long day at Uni.
I am not worrying about the accessibility of the historical blocks now, but I had this idea: If there were so many historical blocks that new nodes were very difficult to add and the existing nodes were running out of space, the full nodes could run out of free space by time and their number could decrease and when there would remain only a smaller number of full nodes, it would be easier to hack the majority of them. I think it is more a theoretical question for now than technical, though, and that would take us into another section. So, I am closing this discussion now. Just think about it.