You can do it by adding another SConscript script for the objects where you would set the variant_dir to a different directory, it would look something like this:
SConstruct
env = Environment()
SConscript('source/SConscript_obj', variant_dir='object',
duplicate=0, exports='env')
SConscript('source/SConscript', variant_dir='bin',
duplicate=0, exports='env')
source/SConscript_obj
Import('env')
env.Object("test.cpp")
env.Object("sdl_test.cpp")
source/SConscript
Import('env')
env.Program("test", ["#/object/test.o"])
env.Program("sdl-test", ["#/object/sdl_test.o"], LIBS=["SDL2"])
Or, in SConscript_obj, you could make a library instead of just compiling objects.
You could also consider adding calls to VariantDir in the existing SConscript, but Im not sure how well that would work.