Our users typically set up their environment and umask once, and let all subprocesses of their session manager inherit those values. This is foiled by /etc/profile, which unconditionally sets the umask. Please put this check in the /etc/skel files instead. The scripts also muck with the environment variables. It would be good if you used the idiom VAR=${VAR:-"value"} to avoid stomping on the environment already set up.
Overriding system default variables (such as umask) works fine for me here by editing $HOME/.bashrc, etc.
We use a generalized but relatively expensive (~.5sec) method for setting up the environment, and therefore make sure that the environment is set up only once. We've done it this way for ten years on other Unixen, so your workaround simply isn't an option here. I think this is more a matter of principle, though: System policy like this should not be put in /etc/profile. Put it in /etc/skel or perhaps /etc/profile.d/policy*, to make it easier to override.
Put your settings in ~/.bash_profile. They are set only once ( at login ) and they are inherited by all subprocesses.