Signs and functoriality of tensor products

Let $C,C',D,D'$ be chain complexes of $R$-modules (let's say with upper indexing, so perhaps I should call them cochain complexes, though they're not duals of anything). Let $f\in Hom^\ast(C,C')$ and $g\in Hom^*(D,D')$. Then the standard convention is that $$(f\otimes g)(x\otimes y)=(-1)^{|g||x|}f(x)\otimes g(y),$$ where $|g|$ is the degree of $g$ and $|x|$ is the degree of $x$. As observed on page 171 of Dold, this is consistent with having a degree 0 chain map $$Hom^\ast(C,C')\otimes Hom^\ast(D,D')\to Hom^\ast(C\otimes C',D\otimes D').$$

What bothers me, though, is that this formula forces $$(h\otimes k)\circ(f\otimes g)=(-1)^{|k||f|}hf\otimes kg,$$ which seems to violate the definition of a bifunctor as given, for example, on page 17 of Kashiwara and Schapira's "Categories and Sheaves", which would seem to require (adapting the notation) $$(1_{C'}\otimes g)(f\otimes 1_D)=(f\otimes 1_{D'})(1_C\otimes g).$$ (Here I suppose we assume that the relevant categories are the category of chain complexes of $R$ modules with $Mor(X,Y)=Hom(X,Y)$ (certainly such things can be composed functorially and the identity behaves properly) and the products of this category with itself). If I'm reading it correctly, this requirement in Kashiwara-Schapira seems to be the same as what Mac Lane is asking for in Proposition II.3.1 of "Categories for the Working Mathematician".

So are we to believe $\otimes$ is not a functor or is there a way to reformulate all of this to be consistent (or am I just getting something wrong)?

There are two options. If you just want an ordinary category of cochain complexes, then you have to take the morphisms to be cochain maps of degree zero. In that context we have $(-1)^{|k||f|}=1$ so there is no problem.
Alternatively, you can have an enriched category of cochain complexes. In more detail, for any symmetric monoidal category $(\mathcal{V},\otimes)$ there is a theory of $\mathcal{V}$-enriched categories. Such a thing has a class of objects, and for each pair of objects $X$ and $Y$, it has an object $\text{Hom}(X,Y)\in\mathcal{V}$. Given a third object $Z$ there is also a composition morphism $c:\text{Hom}(Y,Z)\otimes\text{Hom}(X,Y)\to\text{Hom}(X,Z)$, subject to some obvious axioms. The symmetric monoidal structure on $\mathcal{V}$ includes natural twist isomorphisms $\tau_{PQ}:P\otimes Q\to Q\otimes P$ for all $P,Q\in\mathcal{V}$. When formulating the definition of a bifunctor in an enriched context, you find that you need to use the morphisms $\tau_{PQ}$ in various places.
In the case of interest, we can regard cochain complexes as a category enriched over graded abelian groups. The sign $(-1)^{|k||f|}$ is provided automatically by the relevant twist maps, so the tensor product becomes a bifunctor in the enriched sense.