I found a way to fix the validation and have the auto-completion partially work (for the tag file names, not the attributes) by declaring a tld for each tag file and then refering to the it using the uri instead of referring to the tagdir directly. Its a bit more work but its worth it.
Before:
<%@ taglib prefix="custom" tagdir="/WEB-INF/tags" %>
After:
<%@ taglib prefix="custom" uri="http://myCompany/myProduct/jsp/tags/custom" %>
Together with the custom.tld file:
<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<description>A custom tag library.</description>
<display-name>custom</display-name>
<tlib-version>1.0</tlib-version>
<short-name>custom</short-name>
<uri>http://myCompany/myProduct/jsp/tags/custom</uri>
<tag-file>
<name>error</name>
<path>/WEB-INF/tags/error.tag</path>
</tag-file>
</taglib>