Как реализовать height: calc(100% — 40px) в резиновом блоке?
Вы там наворотили чегото). Что вы хотите сделать конкретно?
Если всегда нужно отнимать 40px, почему 
margin: -40px 0 0 0;
не катит?
Пример описывал тут если с анимацией.
toster.ru/answer?answer_id=272884#answers_list
Никак, вот Вам сухой остаток, без всех Ваших нагромождений, которые не имеют к вопросу отношения:
jsbin.com/siretudu/1/edit
Как можно рассчитать значение 100% и присвоить блоку value, если оно определяется самим блоком value. Говоря простым языком - получается замкнутый круг.
Для этого, как Вам уже написали, существует padding и margin. Вот один из вариантов:
jsbin.com/xikokuru/1/edit