The general strategy for dealing with strandedness, when needed, is to partition an input into 2 files - one for each strand.
While general strandedness features could be built into the tools, it adds a fair amount of complexity in some cases, and it may require more options that interact with other options in specific ways (read: feature bloat and increased usage complexity).
We lean toward simpler approaches. In this case, partitioning data is easy, and if the data will be used multiple times in the future in a strand-specific way, then it may make sense to store things that way indefinitely.
For the case where field 6 stores the strand information:
awk '$6 == "+"' input.bed > input.pos.bed
awk '$6 == "-"' input.bed > input.neg.bed
If input.bed is already sorted properly, so will be input.pos.bed and input.neg.bed. Outside of creating the 2 files, there is no real processing disadvantage with operating on the two files in place of the original. If desired, BED results obtained separately using these 2 files can be combined with bedops --everything.